已知一个线性表L中的数据元素按升序排列,编写一个算法,实现在线性表中插入一个数据元素item,使得线性表仍然保持升序排列。 算法设计如下(使用伪代码写出来,C语言):
时间: 2024-09-19 15:11:00 浏览: 69
可以使用二分查找法来确定插入位置,保证插入后列表仍有序。以下是基于这个思路的C语言伪代码:
```cpp
// 假设有一个名为List的结构体表示线性表,包含数据元素data和指向下一个节点的指针next
struct Node {
int data;
struct Node* next;
};
void insertInSorted(List** head, int item) {
// 初始值设置插入点为头结点,如果没有已存在元素,则直接插入到头
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = item;
newNode->next = *head;
// 如果线性表为空,或者新元素小于当前元素
if (*head == NULL || item <= (*head)->data) {
*head = newNode; // 插入到头部
return;
}
// 否则,从中间开始查找插入位置
Node* current = *head;
while (current->next != NULL && item > current->next->data) {
current = current->next;
}
// 找到正确的位置,将新节点插入
newNode->next = current->next;
current->next = newNode;
}
```
阅读全文