讽957 2022-11-09 18:45 采纳率: 50%
浏览 23

链表实现删除某结点功能

问题遇到的现象和发生背景

给定一个递增整数序列和某个整数M,构造出此递增序列对应的链表,并创建以M为值的新节点且插入到链表中,使其结果序列依然保持递增顺序。

用代码块功能插入代码,请勿粘贴截图
#include <stdio.h>
#include <stdlib.h>
typedef struct Node *NodePtr;
struct Node
{
    // 定义链表结点数据结构
    int Val;
    NodePtr Next;
};

int main()
{
    int N, M;
    int i;
    NodePtr Head, Rear, Pre, Tmp;

    Head = Rear = (NodePtr)malloc(sizeof(struct Node));
    /* 为程序处理方便,构造表头空结点 */
    Head->Next = NULL;

    scanf("%d %d", &N, &M);
    for (i = 0; i < N; i++)
    {                                               // for (____________________) { /* 创建链表 */
        Pre = (NodePtr)malloc(sizeof(struct Node)); /* 申请新结点 */
        Pre->Next = NULL;
        scanf("%d", &Pre->Val);
        Rear->Next = Pre; //____________________; /* 新结点插入链表尾部 */
        Rear = Pre;
    }
    /* 以下寻找M插入位置的前驱结点 */
    Pre = Head;
    while (Pre->Next != NULL && Pre->Next->Val < M) //______________)
        Pre = Pre->Next;
    /* 以下插入M */
    Tmp = (NodePtr)malloc(sizeof(struct Node)); /* 创建新结点 */
    Tmp->Val = M;
    Tmp->Next = Pre->Next; //_____________; /* 插入新结点 */
    Pre->Next = Tmp;       //______________ = Tmp;
    if (Pre == Rear)       /* 插入表尾时,需修改Rear */
        Rear = Tmp;
    /* 以下输出插入后的链表结果 */
    Tmp = Head->Next;
    printf("%d", Tmp->Val);
    for (Tmp = Tmp->Next; Tmp != NULL; Tmp = Tmp->Next)
        printf(" %d", Tmp->Val);
    printf("\n");

    return 0;
}

我想要达到的结果

在上述程序的基础上添加 实现删除某结点功能

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-11-09 20:13
    关注
    评论

报告相同问题?

问题事件

  • 创建了问题 11月9日

悬赏问题

  • ¥20 Wpf Datarid单元格闪烁效果的实现
  • ¥15 图像分割、图像边缘提取
  • ¥15 sqlserver执行存储过程报错
  • ¥100 nuxt、uniapp、ruoyi-vue 相关发布问题
  • ¥15 浮窗和全屏应用同时存在,全屏应用输入法无法弹出
  • ¥100 matlab2009 32位一直初始化
  • ¥15 Expected type 'str | PathLike[str]…… bytes' instead
  • ¥15 三极管电路求解,已知电阻电压和三级关放大倍数
  • ¥15 ADS时域 连续相位观察方法
  • ¥15 Opencv配置出错