6-1 递增的整数序列链表的插入 分数 15 作者 DS课程组 单位 浙江大学 本题要求实现一个函数,在递增的整数序列链表(带头结点)中插入一个新整数,并保持该序列的有序性。 函数接口定义: List Insert( List L, ElementType X ); 其中List结构定义如下: typedef struct Node *PtrToNode; struct Node { ElementType Data; /* 存储结点数据 */ PtrToNode Next; /* 指向下一个结点的指针 */ }; typedef PtrToNode List; /* 定义单链表类型 */ L是给定的带头结点的单链表,其结点存储的数据是递增有序的;函数Insert要将X插入L,并保持该序列的有序性,返回插入后的链表头指针。
时间: 2024-02-09 07:08:31 浏览: 209
递增链表的插入
这道题目的思路相对比较简单,只需要遍历链表,找到第一个大于等于插入元素的元素位置,然后在该位置前插入新元素即可。以下是具体的实现过程:
```c++
List Insert(List L, ElementType X) {
PtrToNode pre = L, cur = L->Next; // 遍历链表
while (cur && cur->Data < X) { // 找到第一个大于等于X的元素位置
pre = cur;
cur = cur->Next;
}
PtrToNode newNode = (PtrToNode)malloc(sizeof(struct Node)); // 创建新结点
newNode->Data = X;
newNode->Next = cur;
pre->Next = newNode; // 在该位置前插入新元素
return L;
}
```
阅读全文