Byte beating face questions:
Number two is a positive number.
By summing list:
Live out the time to write a few bug really embarrassing. . .
A sample
2 3 4 5
4 5 6
2 8 0 1
Sample two
9 9 9
9 9 9
1 9 9 9
1 #include <iostream> 2 using namespace std; 3 4 struct List{ 5 int val; 6 List * next; 7 }; 8 9 List* insert(List *node, int val){ 10 List *root = node; 11 if(node == NULL){ 12 // cout << "!!" << endl; 13 node = new List(); 14 root = node; 15 node->val = val; 16 node->next = NULL; 17 }else{ 18 while(node->next != NULL){ 19 node = node->next; 20 } 21 List * an = new List(); 22 an->val = val; 23 an->next = node->next; 24 node->next = an; 25 } 26 return root; 27 } 28 29 void print(List *an){ 30 while(an != NULL){ 31 cout << an->val<<" "; 32 an = an->next; 33 } 34 cout << endl; 35 } 36 37 38 List * become(List *node){ 39 if(node == NULL) return NULL; 40 List *pnext = NULL; 41 List *parent = NULL; 42 while(node != NULL){ 43 pnext = node->next; 44 node->next = parent; 45 parent = node; 46 node = pnext; 47 } 48 return parent; 49 } 50 51 List * getsum(List *a, List *b){ 52 List *an = become(a); 53 List *bn = become(b); 54 List *cn = new List(); 55 int flag = 0; 56 while(an != NULL && bn!=NULL){ 57 List *cnt = new List(); 58 cnt->val= (an->val + bn->val + flag)%10; 59 if((an->val + bn->val + flag)>=10) 60 flag = 1; 61 else 62 flag = 0; 63 cnt->next = cn->next; 64 cn->next = cnt; 65 an = an->next; 66 bn = bn->next; 67 } 68 while(an != NULL){ 69 List *cnt = new List(); 70 if((an->val + flag)>=10) 71 flag = 1; 72 else 73 flag = 0; 74 cnt->val= (an->val + flag)%10; 75 cnt->next = cn->next; 76 cn->next = cnt; 77 an = an->next; 78 } 79 while(bn != NULL){ 80 List *cnt = new List(); 81 if((bn->val + flag)>=10) 82 flag = 1; 83 else 84 flag = 0; 85 cnt->val= (bn->val + flag)%10; 86 cnt->next = cn->next; 87 cn->next = cnt; 88 bn = bn->next; 89 } 90 if(flag == 1){ 91 List *cnt = new List(); 92 cnt->val= 1; 93 cnt->next = cn->next; 94 cn->next = cnt; 95 } 96 return cn->next; 97 } 98 99 100 int main() { 101 string s; 102 getline(cin, s); 103 List *a = NULL, *b = NULL; 104 int cnt = 0; 105 s += ' '; 106 for(int i = 0; i < s.length(); i++){ 107 if(isdigit(s[i])){ 108 cnt = cnt*10 + s[i]-'0'; 109 }else{ 110 a = insert(a, cnt); 111 cnt = 0; 112 } 113 } 114 getline(cin, s); 115 cnt = 0; 116 s += ' '; 117 for(int i = 0; i < s.length(); i++){ 118 if(isdigit(s[i])){ 119 cnt = cnt*10 + s[i]-'0'; 120 }else{ 121 b= insert(b, cnt); 122 cnt = 0; 123 } 124 } 125 List * node = getsum(a,b); 126 print(node); 127 return 0; 128 }