runtime error: member access within null pointer of type 'struct ListNode' [solution.c]报错:
循环判断条件(p->next!=NULL),p是空指针,p->next即空指针的next----------->这么写是错误的
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
typedef struct ListNode ListNode;
int MAxdivisor(int m, int n) {
int r = m % n;
while (r != 0) {
m = n;
n = r;
r = m % n;
}
return n;
}
struct ListNode* insertGreatestCommonDivisors(struct ListNode* head) {
ListNode *temp, *p;
p = head->next;
while (p->next != NULL) {
temp = (ListNode*)malloc(sizeof(ListNode));
temp->val = MAxdivisor(p->val, p->next->val);
temp->next = p->next;
p->next = temp;
p = temp->next;
}
return head;
}
原题中,链表头head也存储了数据(原题是结点数目大于等于1),而我直接p=head->next(20行),这样是不对的;可能只有一个结点,那么head->next就是NULL,(21行)p->next就是NULL(空指针)的下个指针,可以当成是野指针;于是出现上述错误。
代码错误原因:
1>没有搞清楚原来这个题目链表头结点也存储了数据
2>改正:(20行)p=head->next改成p=head。