leetcode no2 - beyondnlp/nlp GitHub Wiki
**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode * make_node( int add ){
struct ListNode *new;
new = malloc(sizeof(struct ListNode));
new->next = NULL;
new->val = add;
return new;
}
int update( struct ListNode *new ){
if( new->val >= 10 ){
new->val -= 10;
return 1;
}
return 0;
}
struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) {
int add=0;
struct ListNode head, *new, *next, **prev;
head.next = NULL;
for( ; l1 != NULL && l2 != NULL; l1 = l1->next, l2 = l2->next ){
new = make_node(add);
new->val += l1->val + l2->val;
add = update( new );
if( head.next == NULL ){
head.next = new;
}else{
*prev = new;
}
prev = &new->next;
}
for( ; l1 != NULL ; l1 = l1->next ){
new = make_node(add);
new->val += l1->val;
add = update( new );
if( head.next == NULL ){
head.next = new;
}else{
*prev = new;
}
prev = &new->next;
}
for( ; l2 != NULL ; l2 = l2->next ){
new = make_node(add);
new->val += l2->val;
add = update( new );
if( head.next == NULL ){
head.next = new;
}else{
*prev = new;
}
prev = &new->next;
}
if( add ){
new = make_node(add);
if( head.next == NULL ){
head.next = new;
}else{
*prev = new;
}
prev = &new->next;
}
return head.next;
}
