楼主在做LeetCode做两数相加时出现了这个问题
在LeetCode上传的代码如下
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2){
struct ListNode* p1,*p2,*head;
int n1 = 0,n2 = 0,t1 = 0,t2 = 0,i = 0,j = 0;
//初始化指针
head = p1 = p2 =(struct ListNode*)malloc(sizeof(struct ListNode));
p2->val = 0;
p2->next = NULL;
//循环开始
while(l1 != NULL || l2 != NULL){//两个指针l1l2指向的都不为NULL则继续做加法
n1 = 0;
n2 = 0;
if(l1 != NULL)//l1指向val的值赋予n1
{
n1 = l1->val;
}
if(l2 != NULL)//l2指向val的值赋予n2
{
n2 = l2->val;
}
//初始化下一个指针动态指针p1
p1 = (struct ListNode*)malloc(sizeof(struct ListNode));
p1->val = 0;
p1->next =NULL;
p2->val = p2->val + n1 +n2 ;//链表两数之和
if(p2->val>9)//和大于9则取余进位
{
p2->val %= 10;
p1->val = 1;
}
p2->next = p1;
p2 = p1;
if(l1 != NULL){
l1 = l1->next;
}
if(l2 != NULL){
l2 = l1->next;
}
}
if(p1->val == 0)
{
p1 = NULL;
}
return head;
}
楼主自己用笔推演了一遍3位数+3位数的和,表面逻辑上没发现问题。
将这段代码用Dev c++调试出现了program received signal sigsegv提示。
LeetCode上执行结果如下