有没有hxd知道为什么出不来结果啊

#include<stdio.h>
#include <string.h>
#include<stdlib.h>

typedef struct Polynode
{
int coef,exp;
struct Polynode *next;
}Pnode;

Pnode* creat()
{
Pnode *rear,*s,*head;
int c,e;
head=(Pnode *)malloc(sizeof(Pnode));
rear=head;
scanf("%d %d",&c,&e);
while(c!=0)
{
s=(Pnode *)malloc(sizeof(Pnode));
s->coef=c;
s->exp=e;
rear->next=s;
rear=s;
scanf("%d %d",&c,&e);
rear->next=NULL;
}
}//尾插法以0结束

Pnode* polyadd(Pnode *p1,Pnode p2)
{
int sum=0,i=0,c[100],e[100],j=0;
Pnode
r;
p1=p1->next;
p2=p2->next;
Pnode *head;
Pnode *l,*s;
head=(Pnode *)malloc(sizeof(Pnode));
head->next=NULL;
l=head;
while(p1!=NULL&&p2!=NULL)
{
sum=p1->coef+p2->coef;
if(p1->exp>p2->exp)//p1的指数大于p2的指数
s=(Pnode *)malloc(sizeof(Pnode));
l->next=s;
s->exp=p2->exp;
s->coef=p2->coef;
l=s;
p2=p2->next;
}
if(p1->expexp)
{
if(p1->exp>p2->exp)//p1的指数小于p2的指数
s=(Pnode *)malloc(sizeof(Pnode));
l->next=s;
s->exp=p1->exp;
s->coef=p1->coef;
l=s;
p1=p1->next;
}
if(p1->exp==p2->exp&&sum!=0)
{
s=(Pnode *)malloc(sizeof(Pnode));
l->next=s;
s->coef=sum;
s->exp=p1->exp;
l=s;
p1=p1->next;
p2=p2->next;
}
if(p1->exp==p2->exp&&sum==0)
{
p1=p1->next;
p2=p2->next;
}
printf("升幂输出为:\n");
while(l!=NULL)
{
printf("%dx^%d",l->coef,l->exp);
c[i]=l->coef;
e[i]=l->exp;
l=l->next;
i++;
if(l!=NULL)
printf("+");
}
printf("降幂输出为:\n");
for(j=0;i<=i;j++)
{
printf("%dx%d",c[j],e[j]);
if(c[j+1]!=-1&&e[j+1]!=-1)
printf("+");
}
}

Pnode* polyminus(Pnode *p1,Pnode p2)
{
int sum=0,i=0,c[100],e[100],j=0;
Pnode
r;
p1=p1->next;
p2=p2->next;
Pnode *head;
Pnode *l,*s;
head=(Pnode *)malloc(sizeof(Pnode));
head->next=NULL;
l=head;
while(p1!=NULL&&p2!=NULL)
{
sum=p1->coef-p2->coef;
if(p1->exp>p2->exp)//p1的指数大于p2的指数
s=(Pnode *)malloc(sizeof(Pnode));
l->next=s;
s->exp=p2->exp;
s->coef=p2->coef;
l=s;
p2=p2->next;
}
if(p1->expexp)
{
if(p1->exp>p2->exp)//p1的指数小于p2的指数
s=(Pnode *)malloc(sizeof(Pnode));
l->next=s;
s->exp=p1->exp;
s->coef=p1->coef;
l=s;
p1=p1->next;
}
if(p1->exp==p2->exp&&sum!=0)
{
s=(Pnode *)malloc(sizeof(Pnode));
l->next=s;
s->coef=sum;
s->exp=p1->exp;
l=s;
p1=p1->next;
p2=p2->next;
}
if(p1->exp==p2->exp&&sum==0)
{
p1=p1->next;
p2=p2->next;
}
printf("升幂输出为:\n");
while(l!=NULL)
{
printf("%dx^%d",l->coef,l->exp);
c[i]=l->coef;
e[i]=l->exp;
l=l->next;
i++;
if(l!=NULL)
printf("-");
}
printf("降幂输出为:\n");
for(j=0;i<=i;j++)
{
printf("%dx%d",c[j],e[j]);
if(c[j+1]!=-1&&e[j+1]!=-1)
printf("-");
}
}

Pnode* polymultiply(Pnode *p1,Pnode p2)
{
int sum=0,i=0,c[100],e[100],j=0;
Pnode
r;
p1=p1->next;
p2=p2->next;
Pnode *head;
Pnode *l,*s;
head=(Pnode )malloc(sizeof(Pnode));
head->next=NULL;
l=head;
while(p1!=NULL&&p2!=NULL)
{
sum=p1->coef
p2->coef;
if(p1->exp>p2->exp)//p1的指数大于p2的指数
s=(Pnode *)malloc(sizeof(Pnode));
l->next=s;
s->exp=p2->exp;
s->coef=p2->coef;
l=s;
p2=p2->next;
}
if(p1->expexp)
{
if(p1->exp>p2->exp)//p1的指数小于p2的指数
s=(Pnode )malloc(sizeof(Pnode));
l->next=s;
s->exp=p1->exp;
s->coef=p1->coef;
l=s;
p1=p1->next;
}
if(p1->exp==p2->exp&&sum!=0)
{
s=(Pnode )malloc(sizeof(Pnode));
l->next=s;
s->coef=sum;
s->exp=p1->exp;
l=s;
p1=p1->next;
p2=p2->next;
}
if(p1->exp==p2->exp&&sum==0)
{
p1=p1->next;
p2=p2->next;
}
printf("升幂输出为:\n");
while(l!=NULL)
{
printf("%dx^%d",l->coef,l->exp);
c[i]=l->coef;
e[i]=l->exp;
l=l->next;
i++;
if(l!=NULL)
printf("
");
}
printf("降幂输出为:\n");
for(j=0;i<=i;j++)
{
printf("%dx%d",c[j],e[j]);
if(c[j+1]!=-1&&e[j+1]!=-1)
printf("
");
}
}

int main()
{
int i,j;
printf("| ------------------ 请输入要进行的操作----------- |\n");
printf("|------------------ 1:输入Am--------------------- |\n");
printf("| ------------------ 2:输入Bn----------------------|\n");
printf("| ------------------ 3:计算Am+Bn-------------------|\n");
printf("| ------------------ 4:计算Am-Bn-------------------|\n");
printf("| ------------------ 5:计算Am*Bn-------------------|\n");
printf("| ------------------ 6:退出------------------------|\n");
scanf("%d",&i);
{
Pnode *polya,*polyb,*polyc;
switch(i)
{
case 1:
{
printf("请输入Am\n");
polya=creat() ;

                }
            case 2:
                {
                    printf("请输入Bn\n");
                    polyb=creat()    ;
                    
                }
            case 3:
                {
                    printf("M=Am+Bn=:");
                    polyadd(polya,polyb);
                    
                }
            case 4:
                {
                    printf("M=Am-Bn=:");
                    polyminus(polya,polyb)    ;
                    
                }
            case 5:
                {
                    printf("M=Am*Bn=:");
                    polymultiply(polya,polyb);
                        
                }
                
        }
    }
    printf("运算结束\n");
}

你函数定义全是错的,比如

Pnode* polyadd(Pnode *p1,Pnode p2)

应该为

Pnode* polyadd(Pnode *p1,Pnode *p2)

第二个链表没有定义成指针类型啊

其它几个函数都是这样