通过编译但是输不出结果,不知道哪里出了问题,求救
#include <stdio.h>
#include <stdlib.h>
typedef struct LNode
{
int num;
int expn;
struct LNode *next;
}LNode,*LinkList;
//h,d是两个链表的头指针
void createlista(LinkList *h,int n)
{
int i;
*h=(LinkList)malloc(sizeof(LNode));
LinkList p = *h;
for(i=0;i<n+1;i++)
{
p->next=(LinkList)malloc(sizeof(LNode));
p=p->next;
}
}
void createlistb(LinkList *d,int t)
{
int i;
*d=(LinkList)malloc(sizeof(LNode));
LinkList p = *d;
for(i=0;i<t+1;i++)
{
p->next=(LinkList)malloc(sizeof(LNode));
p=p->next;
}
}
void inputa(LinkList h,int n)
{
int i;
LinkList p,q;
p=h->next->next;
q=h->next;
printf("请输入a多项式的指数");
for(i=0;i<n;i++)
{
scanf("%d",&p->expn);
p=p->next;
}
printf("请输入a多项式的系数");
for(i=0;i<n;i++)
{
scanf("%d",&q->num);
q=q->next;
}
}
void inputb(LinkList d,int t)
{
int i;
LinkList p,q;
p=d->next->next;
q=d->next;
printf("请输入b多项式的指数");
for(i=0;i<t;i++)
{
scanf("%d",&p->expn);
p=p->next;
}
printf("请输入b多项式的系数");
for(i=0;i<t;i++)
{
scanf("%d",&q->num);
q=q->next;
}
}
LinkList add(LinkList h,LinkList d)
{
LinkList p,q,r,x,s;
int sum;
s=h;
p=h->next->next;
q=d->next->next;
r=h->next;
while(p!=NULL&&q!=NULL)
{
if(p->expn==q->expn)
{
sum=p->num+q->num;
if(sum!=0)
{
p->num=sum;
r->next=p;
r=p;
p=p->next;
//r=p2;
q=q->next;
//free(r);
}
else
{
//r=p1;
p=p->next;
r->next=p;
//free(r);
//r=p2;
q=q->next;
//free(r);
}
}
else if(p->expn<q->expn)
{
r->next=p;
r=p;
p=p->next;
}
else
{
x=(LinkList)malloc(sizeof(LNode));
x->num=q->num;
x->expn=q->expn;
r->next=x;
x->next=p;
q=q->next;
p=x->next;
}
}
//r->next=p?p:q;
while(p!=NULL)
{
p=p->next;
}
while(q!=NULL)
{
p->next=q;
p=q;
q=q->next;
}
return s;
//free(p2);
}
void show(LinkList head)
{
LinkList p;
p=head->next->next;
for(;p!=NULL;p=p->next)
{
printf("%dX^%d+",p->num,p->expn);
}
}
int main()
{
LinkList h,d,head;
int n,t;
printf("请输入第一个多项式的项数");
scanf("%d",&n);
printf("请输入第二个多项式的项数");
scanf("%d",&t);
createlista(&h,n);
createlistb(&d,t);
inputa(h,n);
inputb(d,t);
head=add(h,d);
show(head);
printf("Hello world!\n");
return 0;
}