#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;
}
Q2.4
最新推荐文章于 2025-07-23 12:29:26 发布