本文共 1539 字,大约阅读时间需要 5 分钟。
You have two numbers represented by a linked list, where each node contains a single digit The digits are stored in reverse order, such that the 1’s digit is at the head of the list. Write a function that adds the two numbers and returns the sum as a linked list.
EXAMPLE Input: (3 -> 1 -> 5) + (5 -> 9 -> 2)
Output: 8 -> 0 -> 8
我采用非递归,按照答案的思路写了递归的方法
#includeusing namespace std;// Creating a Linked List:struct Node{ Node(int d):data(d){next = NULL;}; int data; Node* next;};void printNode(Node* head){ cout<<"Print:"< data< next; } cout<<"End"< data) + (o2==NULL?0:o2->data) + flag; flag = temp / 10; q = new Node(temp % 10); p->next = q; p = p->next; if(o1 != NULL) o1 = o1->next; if(o2 != NULL) o2 = o2->next; } p->next = NULL; p = head->next; delete head; return p; };Node* plusNodeRec(Node *o1, Node *o2, int carry){ if(o1 == NULL && o2 == NULL) return NULL; int result = (o1==NULL?0:o1->data) + (o2==NULL?0:o2->data) + carry; Node* p = new Node(result % 10); Node* next = plusNodeRec(o1==NULL?NULL:o1->next, o2==NULL?NULL:o2->next, result / 10); p->next = next; return p;};int main(){ Node* head1 = new Node(3); head1->next = new Node(1); Node* head2 = new Node(5); head2->next = new Node(9); head2->next->next = new Node(2); // printNode(plusNode(head1, head2)); printNode(plusNodeRec(head1, head2, 0)); system("pause"); };
转载地址:http://quyaa.baihongyu.com/