数据结构 设计一个算法 将元素x插入到一个有序递增顺序表的适当位置上,并保持有序性的完整代码
时间: 2024-09-21 17:10:40 浏览: 40
算法与数据结构实验一(1)顺序表
数据结构设计中,如果我们要将元素 x 插入到一个有序递增的顺序表(如数组)里,可以使用二分查找的思想找到合适的位置。这里给出一个基于 C++ 的简单示例:
```cpp
#include <iostream>
// 定义一个简单的递增有序整数列表结构体
struct IntegerListNode {
int value;
IntegerListNode* next;
};
// 插入函数
void insertIntoSorted(IntegerListNode** head, int x) {
// 初始指向列表头部
IntegerListNode* current = *head;
// 如果列表为空,直接插入
if (!current) {
*head = new IntegerListNode{x};
return;
}
// 使用二分查找法找到插入位置
while (current && current->value < x) {
current = current->next;
}
// 创建新节点并插入
IntegerListNode* newNode = new IntegerListNode{x};
newNode->next = current;
*head = newNode; // 如果找到的是最后一个元素,更新头指针
}
// 示例主函数
int main() {
// 假设我们有这样一个已排序的列表
IntegerListNode* list = nullptr;
list = insertIntoSorted(&list, 5); // 插入 5
list = insertIntoSorted(&list, 2); // 插入 2
list = insertIntoSorted(&list, 8); // 插入 8
// 打印结果
for (IntegerListNode* node = list; node; node = node->next) {
std::cout << node->value << " ";
}
std::cout << std::endl;
return 0;
}
```
这个例子中,`insertIntoSorted` 函数会在插入后返回新的头结点,保证了插入操作后的列表仍然有序。
阅读全文