/**
* Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ typedef struct ListNodep { int val; struct ListNodep *next; }ListNode; ListNode* addTwoNumbers(ListNode* I1, ListNode* I2) { ListNode *rootp = NULL; ListNode *listp = NULL; int value = 0; int varin = 0; if(I1 == NULL && I2 == NULL) return rootp; listp = (ListNode *)malloc(sizeof(ListNode)); rootp = listp; listp->val = 0; listp->next = NULL; while(I1 != NULL || I2 != NULL || varin!= 0){ if(I1 == NULL && I2 != NULL) value = I2->val + varin; if(I1 != NULL && I2 == NULL) value = I1->val + varin; if(I2 != NULL && I1 != NULL) value = I1->val + I2->val + varin; if(I1 == NULL && I2 == NULL) value = varin; varin = 0; if(value >= 10){ varin = value /10; value = value %10; } //此处需要注意,此处需要注意当当前链表已经为NULL后,他指向的空链表 //不能够在往下操作了,需要直接在给当前指针为空链表 if(I1 == NULL) I1 = NULL; else I1 = I1->next; if(I2 == NULL) I2 = NULL; else I2 = I2->next; listp->val = value; if(I1 != NULL || I2 != NULL || varin != 0){ listp->next = (ListNode *)malloc(sizeof(ListNode)); listp = listp->next;} else { listp->next = NULL; } } return rootp;} * Definition for singly-linked list.