m0_61647872 2021-09-12 09:57 采纳率: 0%
浏览 39

递增的整数序列链表的插入 有一个测试点为段错误,求解答

本题要求实现一个函数,在递增的整数序列链表(带头结点)中插入一个新整数,并保持该序列的有序性。

函数接口定义:
List Insert( List L, ElementType X );
其中List结构定义如下:

typedef struct Node PtrToNode;
struct Node {
ElementType Data; /
存储结点数据 /
PtrToNode Next; /
指向下一个结点的指针 /
};
typedef PtrToNode List; /
定义单链表类型 */
L是给定的带头结点的单链表,其结点存储的数据是递增有序的;函数Insert要将X插入L,并保持该序列的有序性,返回插入后的链表头指针。

/* 你的代码将被嵌在这里 */
输入样例:
5
1 2 4 5 6
3
结尾无空行
输出样例:
1 2 3 4 5 6
结尾无空行



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

typedef int ElementType;
typedef struct Node *PtrToNode;
struct Node {
    ElementType Data;
    PtrToNode   Next;
};
typedef PtrToNode List;

List Read(); /* 细节在此不表 */
void Print( List L ); /* 细节在此不表 */

List Insert( List L, ElementType X );

int main()
{
    List L;
    ElementType X;
    L = Read();
    scanf("%d", &X);
    L = Insert(L, X);
    Print(L);
    return 0;
}
List Insert( List L, ElementType X )
{
    List p=L;
    List s;
    s=(List)malloc(sizeof(struct Node));
    s->Data=X;
    s->Next==NULL;
    if(p->Next==NULL)
        {
            p->Next=s;return L;
        }
    while(p->Next->Data<X&&p->Next!=NULL)
    {
        p=p->Next;
    }
    if(p->Next->Data>X){
        s->Next=p->Next;
        p->Next=s;
    }
    return L;
}
![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/966996114136174.png "=600 #left")


```

  • 写回答

1条回答 默认 最新

  • 急速光粒 2021-09-12 10:36
    关注

    Insert函数错了不少,给你做了调整。你看一下:

    List Insert(List L, ElementType X)
    {
        List p = L;
        List s;
        s = (List)malloc(sizeof(struct Node));
        s->Data = X;
        s->Next = NULL;
        if (p->Next == NULL)
        {
            p->Next = s; return L;
        }
        while (p->Next != NULL && p->Next->Data < X)
        {
            p = p->Next;
        }
        if (p->Next != NULL && p->Next->Data > X) {
            s->Next = p->Next;
            p->Next = s;
        }
        else
        {
            p->Next = s;
        }
        return L;
    }
    
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 9月12日

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置