有没有人帮我看看这个程序

输入进去了之后运行不出结果

//用链表实现多项式的合并

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

#include <malloc.h>
/*typedef struct stu
{
    int coef;//系数 
    int expn;//幂指数 
}elemtype;*/
typedef struct stur
{
    int data;
    struct stur *next;
}linklist;
jiafa(linklist *LA,linklist *LB,linklist *LC)
{
    linklist *pa,*pb,*pc;
    LC=(linklist*)malloc(sizeof(linklist));
    pa=LA->next; 
    pb=LB->next;
    pc=LC->next;
    while(pa&&pb)
    {
        pc->data=pa->data+pb->data;
        pa=pa->next;
        pb=pb->next;
        pc=pc->next;
        pc=(linklist*)malloc(sizeof(linklist));
    }
    if(pa) pc->next=pa->next;
    if(pb) pc->next=pb->next;
    while(pc)
    {
        printf("%d",pc->data);
        pc=pc->next;
    }
}
main()
{
    struct stur *p1,*head1,*p2,*head2,*head3;
    head1=(linklist*)malloc(sizeof(linklist));
    p1=head1->next;
    p1=(linklist*)malloc(sizeof(linklist));
    printf("输入LA的数据:\n");
    scanf("%d",&p1->data);
    while(p1->data)
    {
        p1=p1->next;
        p1=(linklist*)malloc(sizeof(linklist));
        printf("输入LA的数据:\n");
        scanf("%d",&p1->data);
    }
    p1->next=NULL;
    
    
    head2=(linklist*)malloc(sizeof(linklist));
    p2=head2->next;
    p2=(linklist*)malloc(sizeof(linklist));
    printf("输入LB的数据:\n");
    scanf("%d",&p2->data);
    while(p2->data)
    {
        p2=p2->next;
        p2=(linklist*)malloc(sizeof(linklist));
        printf("输入LB的数据:\n");
        scanf("%d",&p2->data);
    }
    p2->next=NULL;
    
    
    
    jiafa(head1,head2,head3);
}

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
typedef struct stur
{
    int data;
    struct stur *next;
}linklist;
void jiafa(linklist *LA,linklist *LB,linklist **LC)
{
    linklist *pc = NULL;
	linklist *tail = NULL;
    while(LA&&LB)
    {
        pc=(linklist*)malloc(sizeof(linklist));
        pc->data=LA->data+LB->data;
		pc->next = NULL;
        if(*LC == NULL)
            *LC = pc;
		else
			tail->next = pc;
		tail = pc;
        LA=LA->next;
        LB=LB->next;
    }
    while(LA) 
    {
        tail->next = LA;
		tail = tail->next;
        LA = LA->next;
    }
    if(LB) 
    {
		tail->next = LB;
    }
    pc = *LC;
    while(pc)
    {
        printf("%d ",pc->data);
        pc=pc->next;
    }
}
void main()
{
    struct stur *p1,*head1,*p2,*head2,*head3,*tail;
    head1 = NULL;
    head2 = NULL;
    head3 = NULL;
    tail = NULL;
    printf("输入LA的数据:\n");
    int data = 0;
    scanf("%d",&data);
    while(data)
    {
        p1 = (linklist*)malloc(sizeof(linklist));
        p1->data = data;
        p1->next = NULL;
        if(head1 == NULL)
            head1 = p1;
        else
            tail->next = p1;
        tail = p1;
        printf("输入LA的数据:\n");
        scanf("%d",&data);
    }
    //////////////////
    printf("输入LB的数据:\n");
    tail = NULL;
    scanf("%d",&data);
    while(data)
    {
        p2 = (linklist*)malloc(sizeof(linklist));
        p2->data = data;
        p2->next = NULL;
        if(head2 == NULL)
            head2 = p2;
        else
            tail->next = p2;
        tail = p2;
        printf("输入LB的数据:\n");
        scanf("%d",&data);
    }
    jiafa(head1,head2,&head3);
	system("pause");
}

大改了一下,原先有一些问题。

p1=head1->next;
    p1=(linklist*)malloc(sizeof(linklist));

改成

head1->next=(linklist*)malloc(sizeof(linklist));

p1=head1->next;
    

不然p1重新分配地址,和head1->next就没关系啦

后面while循环中也是一样的错误。顺序不对的