刚错了 改了一下 应该没问题了
#include"iostream.h"
#include"stdlib.h"
typedef struct LNode{
int data;
struct LNode *prior,*next;
}LNode,*LinkList;
void CreateLinkList(LinkList &L)//插表尾法创双向链表
{
L=(LinkList)malloc(sizeof(LNode));
if(!L) exit(-1);
L->next=L->prior=NULL; //创建头结点
LinkList p=NULL,q=L;
char num;
for(cin>>num;num!='#';cin>>num)//输入以'#'结束
{
p=(LinkList)malloc(sizeof(LNode));
if(!p) exit(-1);
p->data=num-48;
p->next=NULL;p->prior=q;
q->next=p;q=p;
}
}
void ListPrint(LinkList L)//遍历表,输出每个元素
{
LinkList p=L->next;
while(p)
{
cout<
p=p->next;
}
cout<
void ListAdd(LinkList L1,LinkList L2,LinkList &R)//L1,L2为相加的两个数,R返回结果
{
LNode *p1=L1,*p2=L2;
while(p1->next)
p1=p1->next;
while(p2->next)
p2=p2->next;
LNode *pR,*qR;
pR=(LNode *)malloc(sizeof(LNode));
pR->data=0;
pR->next=NULL;
int sum;
while(p1!=L1&&p2!=L2)
{
sum=pR->data+p1->data+p2->data;
pR->data=sum%10;
qR=(LNode *)malloc(sizeof(LNode));
qR->data=sum/10;
qR->next=pR;
pR->prior=qR;
pR=qR;p1=p1->prior;p2=p2->prior;
}
while(p1!=L1)
{
sum=pR->data+p1->data;
pR->data=sum%10;
qR=(LNode *)malloc(sizeof(LNode));
qR->data=sum/10;
qR->next=pR;
pR->prior=qR;
pR=qR;p1=p1->prior;
}
while(p2!=L2)
{
sum=pR->data+p2->data;
pR->data=sum%10;
qR=(LNode *)malloc(sizeof(LNode));
qR->data=sum/10;
qR->next=pR;
pR->prior=qR;
pR=qR;p2=p2->prior;
}
if(pR->data==0)
;
else
{
qR=(LNode *)malloc(sizeof(LNode));
qR->next=pR;
pR->prior=qR;
pR=qR;
}
R=pR;
}
void main()
{
LinkList L1,L2,R;
CreateLinkList(L1);//输入以'#'结束
CreateLinkList(L2);//输入以'#'结束
ListAdd(L1,L2,R);
ListPrint(R);
}