各位c语言大能,能不能帮我看看这个程序为什么没有输出🤔

#include
#include
struct datalist
{
int data;
struct datalist *next;
};
struct datalist *list;
struct datalist *creathead()
{
struct datalist *head;
head=(struct datalist *)malloc(sizeof(struct datalist));
head->next=NULL;
return head;
}
struct datalist *addlist(struct datalist *head)
{
struct datalist p=(struct datalist)malloc(sizeof(struct datalist));
int n,i;
printf("请输入列表的数值长度:");
scanf("%d",&n);
p=head;
for(i=0;i
struct datalist *q=(struct datalist*)malloc(sizeof(struct datalist));
printf("请输入第%d个数据的数值:",i+1);
scanf("%d",&q->data);
q->next=NULL;
p->next=q;
p=q;
}
return head;
}
struct datalist *output(struct datalist *head)
{
struct datalist *node;
node=(struct datalist *)malloc(sizeof(struct datalist));
node=head->next;
while(node){
printf("%d",node->data);
node=node->next;
}
}
struct datalist *add(struct datalist *la,struct datalist *lb,struct datalist *lc)
{
struct datalist pa,pb,pc;
pa=(struct datalist
)malloc(sizeof(struct datalist));
pb=(struct datalist
)malloc(sizeof(struct datalist));
pc=(struct datalist
)malloc(sizeof(struct datalist));
pa=la->next;
pb=lb->next;
pc=lc=la;
while(pa&&pb){
if(pa->data<=pb->data){
pc->next=pa;
pc=pa;
pa=pa->next;
}
else{
pc->next=pb;
pc=pb;
pb=pb->next;
}
}
pc->next=pa?pa:pb;
return lc;
}
void main()
{
struct datalist *la,lb,lc;
printf("请输入第一个链表的数据域\n");
la=creathead();
addlist(la);
printf("请输入第二个链表的数据域\n");
lb=creathead();
addlist(lb);
lc=creathead();
add(la,lb,lc);
printf("合并的有序单链表为:\n");
output(lc);
}

```

```**


struct datalist *output(struct datalist *head)
{
struct datalist *node;
node=(struct datalist *)malloc(sizeof(struct datalist));
node=head->next;

在这里 print 一下 head 所指向的结构的内容。

修改如下,供参考:

#include<stdio.h>
#include<stdlib.h>
struct datalist{
    int data;
    struct datalist *next;
};

//struct datalist *list; 修改

struct datalist *creathead()
{
    struct datalist *head;
    head=(struct datalist *)malloc(sizeof(struct datalist));
    head->next=NULL;
    return head;
}
struct datalist *addlist(struct datalist *head)
{
    //struct datalist* p=(struct datalist*)malloc(sizeof(struct datalist));修改
    struct datalist* p;
    int n,i;
    printf("请输入列表的数值长度:");
    scanf("%d",&n);
    p=head;
    for(i=0;i<n;i++){
        struct datalist *q=(struct datalist*)malloc(sizeof(struct datalist));
        printf("请输入第%d个数据的数值:",i+1);
        scanf("%d",&q->data);
        q->next=NULL;
        p->next=q;
        p=q;
    }
    return head;
}
struct datalist *output(struct datalist *head)
{
    struct datalist *node;
    //node=(struct datalist *)malloc(sizeof(struct datalist)); 修改
    node=head->next;
    while(node){
        printf("%d ",node->data);
        node=node->next;
    }
}
struct datalist *add(struct datalist *la,struct datalist *lb,struct datalist *lc)
{
    struct datalist *pa,*pb,*pc;
    //pa=(struct datalist)malloc(sizeof(struct datalist));修改
    //pb=(struct datalist)malloc(sizeof(struct datalist));
    //pc=(struct datalist)malloc(sizeof(struct datalist));
    pa=la->next;
    pb=lb->next;
    pc=lc;        //=la;修改
    while(pa&&pb){
        if(pa->data <= pb->data){
            pc->next=pa;
            pc=pa;
            pa=pa->next;
        }
        else{
            pc->next=pb;
            pc=pb;
            pb=pb->next;
        }
    }
    pc->next=pa?pa:pb;
    return lc;
}
int main() //void 修改
{
    struct datalist *la,*lb,*lc;
    printf("请输入第一个链表的数据域\n");
    la=creathead();
    addlist(la);
 
    printf("请输入第二个链表的数据域\n");
    lb=creathead();
    addlist(lb);
 
    lc=creathead();
 
    add(la,lb,lc);
    printf("合并的有序单链表为:\n");
    output(lc);

    return 0;
}