有序顺序表的插入 (*)
时间: 2023-06-16 10:02:13 浏览: 85
有序顺序表的插入可以分为两种情况:
1. 插入元素小于等于表中最小元素,直接插入到表头。
2. 插入元素大于表中最小元素,从表尾开始遍历,找到第一个比插入元素小的位置,将插入元素插入到该位置之后。
下面是 C++ 代码实现:
```cpp
void insert(SqList &L, int x) {
if (L.length == L.maxSize) { // 判断表是否已满
return;
}
if (x <= L.data[0]) { // 插入元素小于等于表中最小元素
for (int i = L.length; i > 0; i--) {
L.data[i] = L.data[i - 1];
}
L.data[0] = x;
L.length++;
return;
}
if (x >= L.data[L.length - 1]) { // 插入元素大于等于表中最大元素
L.data[L.length] = x;
L.length++;
return;
}
int i = L.length - 1;
while (i >= 0 && L.data[i] > x) { // 从表尾开始遍历,找到第一个比插入元素小的位置
L.data[i + 1] = L.data[i];
i--;
}
L.data[i + 1] = x; // 将插入元素插入到该位置之后
L.length++;
}
```
其中,`SqList` 为顺序表结构体,包含 `data` 数组、`length` 表示当前表中元素个数、`maxSize` 表示当前表的最大容量。
阅读全文