问题遇到的现象和发生背景
给定一个递增整数序列和某个整数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;
}
我想要达到的结果
在上述程序的基础上添加 实现删除某结点功能