八阳呀 2021-03-20 14:32 采纳率: 100%
浏览 60
已采纳

程序有段错误,我找不到,大神帮帮忙!

题目:已知两个非降序链表序列S1与S2,设计函数构造出S1与S2合并后的新的非降序链表S3。

输入格式:

输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。

输出格式:

在一行中输出合并后新的非降序链表,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL

输入样例:

1 3 5 -1
2 4 6 8 10 -1

输出样例:

1 2 3 4 5 6 8 10

我的代码:

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

typedef struct LNode
{
    int data;
    struct LNode *next;
} LNode,*LinkList;

LinkList read(){
    int n;
    LinkList s,p,head; 
    scanf("%d",&n);
    head=s=(LinkList)malloc(sizeof(LNode));
    while(n!=-1)
    {
        p=(LinkList)malloc(sizeof(LNode));
        p->data=n;s->next=p;s=p;
        scanf("%d",&n);
    }    
    s->next=NULL;
    return(head->next);
}

LinkList MergeList_L(LinkList pa,LinkList pb){
    LinkList Lc,pc;
    pc=Lc=(LinkList)malloc(sizeof(LNode));pc->next=NULL;
    while(pa&&pb)
    {
        if(pa->data>pb->data)
        {
            pc->next=pb;pc=pb;pb=pb->next;
        }
        else 
        {
            pc->next=pa;pc=pa;pa=pa->next;
        }
    }
    pc->next=pa?pa:pb;
    return(Lc->next);

void print_L(LinkList Lc){
    LinkList s;
    s=Lc;
    if(Lc->next==NULL)printf("NULL");
    else {
            while(s->next)
            {
                printf("%d ",s->data);s=s->next;
            }
            printf("%d",s->data);
          }
}

int main()
{
    int n;
    LinkList La;LinkList Lb;LinkList Lc;
    La=read();
    Lb=read();
    Lc=MergeList_L(La,Lb);
    print_L(Lc);
return 0; 
}

作业系统提交结果:

  • 写回答

1条回答 默认 最新

  • 小亮点科技 2021-03-20 14:38
    关注

    LinkList s,p,head; 
        scanf("%d",&n);
        head=s=(LinkList)malloc(sizeof(LNode));

    需要改成指针

    LinkList *s, *p, *head;

    head = s = (LinkList *)malloc(sizeof(LNode));

    还有其他分配的地方也需要用指针。

    你可以改了以后再试,如果还有其他问题可以再提出来。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料