初学编程求助
我想用C语言实现任意连个整数相加写了一段代码了#include<stdio.h>
#include<stdlib.h>
#define NULL 0
#define LEN sizeof(struct num)
struct num
{
int data;
struct num *next;
}
struct num *creat(void)
{
struct num *head,*p1,*p2;
head=NULL;
int n=0;
p2=p1=(struct num *)malloc(LEN);
while(getchar()!='+'&&getchar!='\0')
{
n=n+1;
p1->data=getchar()-48;
if(n=1)p1->next=NULL;
else
{
p1->next=p2;
p2=p1;
}
p1=(struct num *)malloc(LEN);
}
head=p2;
return(head);
}
int sum(int a,int b)
{
int sum;
sum=a+b;
return(sum);
}
struct num * jianli(struct num *head1,struct num *head2)
{
struct num *head,*p1,*p2,*p3,*p4;
p3=head1;
p4=head2;
head=NULL;
int n=0,j=0;
p2=p1=(struct num *)malloc(LEN);
while(p3->next!=NULL&&p4->next!=NULL)
{
if(sum(p3->data,p4->data)+j<10)
{
p1->data=sum(p3->data,p4->data)+j;
j=0;
}
if(sum(p3->data,p4->data)+j>9)
{
p1->data=sum(p3->data,p4->data)+j-10;
j=1;
}
n=n+1;
if(n=1)
{
p2=p1;
p2->next=NULL;
}
else
{
p1->next=p2;
p2=p1;
}
p1=(struct num *)malloc(LEN);
};
while(p3->next=NULL&&p4->next!=NULL)
{
if(p3->data+j<10)
{
p1->data=p3->data+j;
j=0;
}
if(p3->data+j>9)
{
p1->data=p3->data+j-10;
j=i;
};
p1->next=p2;
p2=p1;
p1=(struct num *)malloc(LEN);
};
while(p4->next=NULL&&p3->next!=NULL)
{
if(p4->data+j<10)
{
p1->data=p4->data+j;
j=0;
};
if(p4->data+j>9)
{
p1-data=p4->data+j-10;
j=1;
};
p1->next=p2;
p2=p1;
p1=(struct num *)malloc(LEN);
};
while(p3->next=NULL&&p4->next=NULL)
{
head=p2;
};
return(head);
}
void print(struct num *head)
{struct num *p;
p=head;
while(head!=NULL)
{
printf("%d",p->data);
p=p->next;
}
void main()
{
struct num *head1,*head2,*head3;
head1=creat();
head2=creat();
head3=creat(head1,head2);
print(head3);
}
构建了两个链表了第三个链表似乎和前两个不太一样要请高手支点一二。
初学编程程序刚刚写了一部分就遇到困难了……