有哪位好心人帮帮我
#include<stdio.h>
#include<string.h>
#include<math.h>
#define null 0
typedef struct ser_num_section
{
int num;
struct ser_num_section *prior, *next;
}dlinklist;
dlinklist * s,p1,p2,head1,head2;
void compute1(int n1, int n2)
{ int i,temp;
if(n1>=n2)
{
for(i=0;i<n2;i++)
{ int temp=0;
temp=p1.num+p2.num;
if(temp<10000)
p1.num=p1.num+p2.num;
else
{
p1.num=temp-10000;
(p1.prior->num)++;
}
p1=*(p1.prior);
p2=*(p2.prior);
}
p1=head1;
for(i=0;i<n1;i++)
{
printf("d%",p1.num);
printf(",");
p1=*p1.next;
}
}
else
{
{
int swap;
swap=n1;
n1=n2;
n2=swap;
}
for(i=0;i<n2;i++)
{
temp=p1.num+p2.num;
if(temp<10000)
p2.num=p1.num+p2.num;
else
{
p2.num=temp-10000;
(p2.prior->num)++;
}
p1=*p1.prior;
p2=*p2.prior;
}
p2=head2;
for(i=0;i<n1;i++)
{
printf("d%",p2.num);
printf(",");
p2=*(p2.next);
}
}
}
void compute2(int n1, int n2)
{
int i;
if(n1>=n2)
{
for(i=0;i<n2;i++)
{
if(p1.num>p2.num)
p1.num=p1.num-p2.num;
else
{
p1.num=p1.num+10000-p2.num;
(p1.prior->num)--;
}
p1=*p1.prior;
p2=*p2.prior;
}
p1=head1;
for(i=0;i<n1;i++)
{
printf("d%",p1.num);
printf(",");
p1=*p1.next;
}
}
else
{
{
int swap;
swap=n1;
n1=n2;
n2=swap;
}
for(i=0;i<n2;i++)
{
if(p1.num>p2.num)
p2.num=p1.num-p2.num;
else
{
p2.num=p1.num+10000-p2.num;
(p1.prior->num)--;
}
p1=*p1.prior;
p2=*p2.prior;
}
p2=head1;
printf("-");
for(i=0;i<n1;i++)
{
printf("d%",p2.num);
printf(",");
p2=*p2.next;
}
}
}
void compute4(int n1 ,int n2)
{
int i;
if(n1>=n2)
{
for(i=0;i<n2;i++)
{
if(p1.num>p2.num)
p1.num=p1.num-p2.num;
else
{
p1.num=p1.num+10000-p2.num;
(p1.prior->num)--;
}
p1=*p1.prior;
p2=*p2.prior;
}
p1=head1;
printf("-");
for(i=0;i<n1;i++)
{
printf("d%",p1.num);
printf(",");
p1=*p1.next;
}
}
else
{
{
int swap;
swap=n1;
n1=n2;
n2=swap;
}
for(i=0;i<n2;i++)
{
if(p1.num>p2.num)
p2.num=p1.num-p2.num;
else
{
p2.num=p1.num+10000-p2.num;
(p1.prior->num)--;
}
p1=*p1.prior;
p2=*p2.prior;
}
p2=head1;
for(i=0;i<n1;i++)
{
printf("d%",p2.num);
printf(",");
p2=*p2.next;
}
}
}
void main()
{int n1=1,n2=1;
char signal1='+',signal2='+';
s=malloc(sizeof(dlinklist));
head1=*s;
printf("please type two big number\n");
scanf("d%",&head1.num);
if(head1.num<0)
{
head1.num=abs(head1.num);
signal1='-';
}
s=malloc(sizeof(dlinklist));
p1=*s;
scanf("d%",p1.num);
*p1.prior=head1;
n1++;
while(getchar()!=';')
{
s=malloc(sizeof(dlinklist));
scanf("d%",s->num);
p1.next= s;
n1++;
p1=*s;
}
*p1.next=head1;
head2=malloc(sizeof(dlinklist));
scanf("d%",head2.num);
if(head2.num<=0)
{
head2.num=abs(head2.num);
signal2='-';
}
p2=malloc(sizeof(dlinklist));
scanf("d%",p2.num);
*p2.prior=head1;
n2++;
while(getchar()!=';')
{
s=malloc(sizeof(dlinklist));
scanf("d%",s->num);
p2.next= s;
n2++;
p2=*s;
}
*p2.next=head2;
if((signal1!='-')&&(signal2!='-'))
compute1(n1,n2);
if((signal1!='-')&&(signal2=='-'))
compute2(n1,n2);
if((signal1=='-')&&(signal2=='-'))
{
printf("-");
compute1(int n1, int n2);
}
if((signal1=='-')&&(signal2!='-'))
compute4(n1,n2);
}