主题:用链表实行两个长整数相加,请问我弄的出的问题在哪还有什么错的地方,麻烦大家帮我改进一下,谢谢!!
#include <stdio.h>
#include <malloc.h>
#define NULL 0
typedef struct lnode {
char data;
struct lnode * next;
}lnode,* linklist;
void make_lnode(lnode &l){
l=(linklist )malloc(sizeof(lnode));
l->next=NULL;
}
void great_linklist(linklist &l){
char c;
linklist r,u;
l=(linklist )malloc(sizeof(lnode));
l->next=NULL;
scanf("%c",&c);
while(c!='/n'){
u=(linklist )malloc(sizeof(lnode));
u->data=c;
u->next=l->next;
r->next=u;
r=u;
scanf("%c",&c);
}
r->next=NULL;
}
int printout(linklist &l){
linklist p;
p=l->next;
while(p){
printf("%d",p->data);
p=p->next;
}
}
linklist add(linklist l1,linklist l2,linklist &l3){
linklist r1,r2,r3;
int a,n=0;
for(r1,r2;r1<l1||r2<l2;--r1,--r2){
while(r1&&r2){
r3=(linklist )malloc(sizeof(lnode));
a=(r1->data+r2->data+n)%10;
n=(r1->data+r2->data+n)/10;
r3->data=a;
r3->next=l3->next;
l3->next=r3;
}
while(r1){
r3=(linklist )malloc(sizeof(lnode));
a=(r1->data+n)%10;
n=(r1->data+n)/10;
r3->next=l3->next;
l3->next=r3;
}
while(r2){
r3=(linklist )malloc(sizeof(lnode));
a=(r2->data+n)%10;
n=(r2->data+n)/10;
r3->data=a;
r3->next=l3->next;
l3->next=r3;
}
}
return l3;
}
int main(){
linklist l1,l2,l3;
make_lnode(l3);
great_linklist(l1);
printf("+");
great_linklist(l2);
add(l1,l2,l3);
printf("=");
printout(l3);
}[em2][em2][em2]
#include <malloc.h>
#define NULL 0
typedef struct lnode {
char data;
struct lnode * next;
}lnode,* linklist;
void make_lnode(lnode &l){
l=(linklist )malloc(sizeof(lnode));
l->next=NULL;
}
void great_linklist(linklist &l){
char c;
linklist r,u;
l=(linklist )malloc(sizeof(lnode));
l->next=NULL;
scanf("%c",&c);
while(c!='/n'){
u=(linklist )malloc(sizeof(lnode));
u->data=c;
u->next=l->next;
r->next=u;
r=u;
scanf("%c",&c);
}
r->next=NULL;
}
int printout(linklist &l){
linklist p;
p=l->next;
while(p){
printf("%d",p->data);
p=p->next;
}
}
linklist add(linklist l1,linklist l2,linklist &l3){
linklist r1,r2,r3;
int a,n=0;
for(r1,r2;r1<l1||r2<l2;--r1,--r2){
while(r1&&r2){
r3=(linklist )malloc(sizeof(lnode));
a=(r1->data+r2->data+n)%10;
n=(r1->data+r2->data+n)/10;
r3->data=a;
r3->next=l3->next;
l3->next=r3;
}
while(r1){
r3=(linklist )malloc(sizeof(lnode));
a=(r1->data+n)%10;
n=(r1->data+n)/10;
r3->next=l3->next;
l3->next=r3;
}
while(r2){
r3=(linklist )malloc(sizeof(lnode));
a=(r2->data+n)%10;
n=(r2->data+n)/10;
r3->data=a;
r3->next=l3->next;
l3->next=r3;
}
}
return l3;
}
int main(){
linklist l1,l2,l3;
make_lnode(l3);
great_linklist(l1);
printf("+");
great_linklist(l2);
add(l1,l2,l3);
printf("=");
printout(l3);
}[em2][em2][em2]