用链表实现两个二元二次多项式相乘怎么做求

用链表实现两个二元二次多项式相乘。
输入
输入的数依次为:x,y,xy,x^2,y^2的系数。
输出
输出的数依次为:x,y,xy,x^2,y^2的系数。
样例输入
1 1 0 0 0
1 1 0 0 0
样例输出
0 0 2 1 1

新手代码,应该是遇到了同一节课
有很多不合适不正确的请大家指正。
```c
#include<stdio.h>
#include<stdlib.h>
typedef int sltdatetype;
 typedef struct node{
     sltdatetype xishu;
     struct node *next;
 } Node ,*Link;
 
 //打印多项式
void show(node* head)
{
    node* cur = head->next;
        printf("%dx",cur->xishu);//打印第一项
        cur = cur->next;
        printf("+%dy",cur->xishu);
        cur = cur->next;
        printf("+%dxy",cur->xishu);
        cur = cur->next;
        printf("+%dx^2",cur->xishu);
        cur = cur->next;
        printf("+%dy^2",cur->xishu);
        cur = cur->next; 
    printf("\n");
}
//创建链表
 int createLinklist(Link head){
    int c;
    char ch=1;
    Link p,q;
    q=head;
    while(ch!='\n')
    {
        p=(Link)malloc(sizeof(Node));
        scanf("%d",&c);
        p->xishu=c;
        q->next=p;
        p->next=NULL;
        q=p;    
        ch=getchar();
    }
    q->next=NULL;
    ch=1;
    return 1;
    
}

int mul(Link s1,Link s2,Link l)
{
    int i=4,n;
    Link p,q,ms,mg;
    p=s1->next;
    q=s2->next;
    mg=l;
    if(p->xishu!=0||q->xishu!=0)
    {
        ms=(Link)malloc(sizeof(Node));
    ms->xishu=0;
    mg->next=ms;
    ms->next=NULL;
    mg=ms;
    
        ms=(Link)malloc(sizeof(Node));
    ms->xishu=0;
    mg->next=ms;
    ms->next=NULL;
    mg=ms;
    
        ms=(Link)malloc(sizeof(Node));
    ms->xishu=p->xishu*(q->next)->xishu+(p->next)->xishu*q->xishu;
    mg->next=ms;
    ms->next=NULL;
    mg=ms;
    
        ms=(Link)malloc(sizeof(Node));
    ms->xishu=p->xishu*q->xishu;
    mg->next=ms;
    ms->next=NULL;
    mg=ms;
    
       ms=(Link)malloc(sizeof(Node));
    ms->xishu=(p->next)->xishu*(q->next)->xishu;
    mg->next=ms;
    ms->next=NULL;
    mg=ms;
    }
    else 
    {
        for(n=0;n<4;n++)
        {
            ms=(Link)malloc(sizeof(Node));
            ms->xishu=0;
            mg->next=ms;
            ms->next=NULL;
            mg=ms;
        }
    }
   return 1;
}

int show1(Link head){
    Link p;
    p=(Link)malloc(sizeof(Node));
    p=head->next;
    while(p!=NULL){
        printf("%d,",p->xishu);
        p=p->next;
    }
}

int main(){
    int n;
    Link num1;
    Link num2; 
    Link List;
    List=(Link)malloc(sizeof(Node));
    List->next=NULL;
    num1=(Link)malloc(sizeof(Node));//创建了一个单链表,设置头结点head 
    num1->next=NULL; 
    num2=(Link)malloc(sizeof(Node));//创建了一个单链表,设置头结点head 
    num2->next=NULL; 
    printf("请输入两行多项式系数(用空格隔开,回车结束):\n");
    createLinklist(num1);
    createLinklist(num2);
    mul(num1,num2,List);
    show(num1);
    show(num2);
    show1(List);
    return 0;
}



```