2.5链表 链式A+B
把测试代码也写上。
1 #include <iostream> 2 #include <vector> 3 #include <string> 4 #include <queue> 5 #include <algorithm> 6 using namespace std; 7 8 struct ListNode 9 { 10 int val; 11 struct ListNode *next; 12 ListNode(int x):val(x), next(NULL) {} 13 }; 14 15 ListNode* create(vector<int> v) 16 { 17 ListNode *p = new ListNode(0); 18 ListNode *temp1 = p; 19 for (int i = 0;i < v.size();i++) 20 { 21 ListNode *temp2 = new ListNode(v[i]); 22 temp1->next = temp2; 23 temp1 = temp1->next; 24 } 25 return p->next; 26 } 27 28 void printList(ListNode* result) 29 { 30 queue<int> que; 31 ListNode* temp = result; 32 while (temp) 33 { 34 que.push(temp->val); 35 temp = temp->next; 36 } 37 while (!que.empty()) 38 { 39 cout << que.front(); 40 que.pop(); 41 } 42 } 43 44 class Plus { 45 public: 46 int cal(int a, int b, int &flag) 47 { 48 int sum = a + b + flag; 49 if (sum > 9) 50 { 51 flag = 1; 52 return sum % 10; 53 } 54 else 55 { 56 flag = 0; 57 return sum; 58 } 59 } 60 61 ListNode* plusAB(ListNode* a, ListNode* b) 62 { 63 queue<int> qua, qub; 64 while (a) 65 { 66 qua.push(a->val); 67 a = a->next; 68 } 69 while (b) 70 { 71 qub.push(b->val); 72 b = b->next; 73 } 74 while (qua.size() < qub.size()) 75 { 76 qua.push(0); 77 } 78 while (qua.size() > qub.size()) 79 { 80 qub.push(0); 81 } 82 83 ListNode* pHead = new ListNode(0); 84 ListNode* pM = pHead; 85 86 int flag = 0; 87 while (!qua.empty()) 88 { 89 int ans = cal(qua.front(), qub.front(), flag); 90 ListNode* temp = new ListNode(ans); 91 pM->next = temp; 92 pM = pM->next; 93 qua.pop(); 94 qub.pop(); 95 } 96 if (flag) 97 { 98 ListNode* temp = new ListNode(1); 99 pM->next = temp; 100 pM = pM->next; 101 } 102 return pHead->next; 103 } 104 }; 105 106 int main() 107 { 108 vector<int> v1{ 4,6,8 }; 109 vector<int> v2{ 5,7,6 }; 110 ListNode* p1 = create(v1); 111 ListNode* p2 = create(v2); 112 ListNode* ret; 113 Plus solution; 114 ret=solution.plusAB(p1, p2); 115 printList(ret); 116 return 0; 117 }
-------------------------------------------------
原创博客 转载请注明出处http://www.cnblogs.com/hslzju
-------------------------------------------------