把测试代码也写上。

 #include <iostream>
#include <vector>
#include <string>
#include <queue>
#include <algorithm>
using namespace std; struct ListNode
{
int val;
struct ListNode *next;
ListNode(int x):val(x), next(NULL) {}
}; ListNode* create(vector<int> v)
{
ListNode *p = new ListNode();
ListNode *temp1 = p;
for (int i = ;i < v.size();i++)
{
ListNode *temp2 = new ListNode(v[i]);
temp1->next = temp2;
temp1 = temp1->next;
}
return p->next;
} void printList(ListNode* result)
{
queue<int> que;
ListNode* temp = result;
while (temp)
{
que.push(temp->val);
temp = temp->next;
}
while (!que.empty())
{
cout << que.front();
que.pop();
}
} class Plus {
public:
int cal(int a, int b, int &flag)
{
int sum = a + b + flag;
if (sum > )
{
flag = ;
return sum % ;
}
else
{
flag = ;
return sum;
}
} ListNode* plusAB(ListNode* a, ListNode* b)
{
queue<int> qua, qub;
while (a)
{
qua.push(a->val);
a = a->next;
}
while (b)
{
qub.push(b->val);
b = b->next;
}
while (qua.size() < qub.size())
{
qua.push();
}
while (qua.size() > qub.size())
{
qub.push();
} ListNode* pHead = new ListNode();
ListNode* pM = pHead; int flag = ;
while (!qua.empty())
{
int ans = cal(qua.front(), qub.front(), flag);
ListNode* temp = new ListNode(ans);
pM->next = temp;
pM = pM->next;
qua.pop();
qub.pop();
}
if (flag)
{
ListNode* temp = new ListNode();
pM->next = temp;
pM = pM->next;
}
return pHead->next;
}
}; int main()
{
vector<int> v1{ ,, };
vector<int> v2{ ,, };
ListNode* p1 = create(v1);
ListNode* p2 = create(v2);
ListNode* ret;
Plus solution;
ret=solution.plusAB(p1, p2);
printList(ret);
return ;
}
05-28 02:18
查看更多