试写一个插入算法 int insertPost _ seq ( palist , p , x ),在 palist 所指顺序表中,下标为 p 的元素之后,插入一个值为 x 的元素,返回插入成功与否的标志。
时间: 2024-09-21 11:13:36 浏览: 30
C++实现基于静态数组的顺序表
5星 · 资源好评率100%
在C++中,你可以编写一个插入算法如下面所示:
```cpp
#include <iostream>
using namespace std;
// 假设palist是一个动态数组或vector类型的有序整数列表
bool insertPostSeq(int *palist, int p, int x) {
// 验证输入是否有效
if (p < 0 || p > sizeof(palist)/sizeof(*palist)) {
cout << "Invalid index!" << endl;
return false;
}
// 如果p等于列表长度,则直接在末尾插入
if (p == sizeof(palist)/sizeof(*palist)) {
palist[sizeof(palist)/sizeof(*palist)] = x; // 插入x
return true;
} else {
// 否则,从p开始向后移动元素,然后插入x
for (int i = sizeof(palist)/sizeof(*palist) - 1; i >= p; --i) {
palist[i + 1] = palist[i]; // 将元素移到下一位置
}
palist[p] = x; // 在指定位置插入x
return true;
}
}
int main() {
int palist[] = {1, 2, 3, 4, 5};
int p = 3;
int x = 6;
bool success = insertPostSeq(&palist[0], p, x);
if (success) {
cout << "Inserted successfully at position " << p << ": ";
for (int i : palist) {
cout << i << " ";
}
} else {
cout << "Insertion failed." << endl;
}
return 0;
}
```
这个函数首先检查索引的有效性,然后处理特殊情况(当p等于数组长度),否则就遍历并移动元素以创建空间插入新元素。最后返回插入成功的布尔值。
阅读全文