错误提示:
Line 70: Char 15: runtime error: member access within misaligned address 0x000000000031 for type ‘struct ListNode’, which requires 8 byte alignment (ListNode.c)
原因:
结构体定义:
struct ListNode {
int val;
struct ListNode *next;
};
申请空间:
result = (struct ListNode*)malloc(sizeof(struct ListNode));
LinkNode结构体定义中有指针,而用malloc分配空间后,指针未指向任何空间。
解决
增加:
result->next = NULL;
以后的编程中需注意这一点。
通过代码
struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) {
struct ListNode *result;//结果头节点
result = (struct ListNode*)malloc(sizeof(struct ListNode));
result->next = NULL;
struct ListNode *r;r=result;
int carry=0;//进位
int sum=0;
struct ListNode *p;
struct ListNode *q;
p=l1;q=l2;
while(p || q || carry !=0)
{
r->next = (struct ListNode*)malloc(sizeof(struct ListNode));
r=r->next;r->next=NULL;
int pv=(p)? p->val : 0;
int qv=(q)? q->val : 0;
sum= pv+qv+carry;
r->val=(sum<10)? sum : sum-10;
carry = sum/10;
p=(p)? p->next :p;
q=(q)? q->next :q;
}
return result->next;
}