#include <iostream> using namespace std; typedef struct Node { int data; struct Node* next; }Node, *pNode; pNode Init(int* a, int len) { int i; pNode head, p, q; head = new Node(); head->data = a[0]; q = head; for (i = 1; i < len; ++i) { p = new Node(); p->data = a[i]; q->next = p; q = p; } q->next = NULL; return head; } void printList(pNode p) { while(p) { cout<<p->data<<" "; if (p->next) { p = p->next; } else { cout<<endl; break; } } } void addList(pNode aList, pNode bList, pNode cList) { pNode p1, p2, re, newOne; int up = 0; p1 = aList; p2 = bList; re = cList; while(p1 && p2) { newOne = new Node(); re->next = newOne; re = newOne; if (p1->data + p2->data + up >= 10) { re->data = p1->data + p2->data + up - 10; up = 1; } else { re->data = p1->data + p2->data + up; up = 0; } p1 = p1->next; p2 = p2->next; } while(p1) { newOne = new Node(); re->next = newOne; re = newOne; if (p1->data + up >= 10) { re->data = p1->data + up - 10; up = 1; } else { re->data = p1->data + up; up = 0; } p1 = p1->next; } while(p2) { newOne = new Node(); re->next = newOne; re = newOne; if (p2->data + up >= 10) { re->data = p2->data + up - 10; up = 1; } else { re->data = p2->data + up; up = 0; } p2 = p2->next; } re->next = NULL; } int main(void) { pNode aList, bList, cList; int a[] = {3, 1, 5, 3, 2}; int b[] = {5, 9, 2, 7}; aList = Init(a, sizeof(a) / sizeof(int)); bList = Init(b, sizeof(b) / sizeof(int)); cList = new Node(); addList(aList, bList, cList); printList(aList); printList(bList); printList(cList->next); return 0; }