请编写顺序表的InitList、GetElem、ListInsert、ListDelete四个函数,并编写main函数调用以上四个函数实现完整的功能。请统一提交一个cpp文件
时间: 2024-09-14 08:09:44 浏览: 35
编写函数,建立一个顺序表并输出,计算该顺序表的长度。 实现在顺序表中查找第i个元素的值。实现在顺序表中第i个位置上插入值为x的
5星 · 资源好评率100%
下面是一个简单的顺序表实现,包括了`InitList`、`GetElem`、`ListInsert`和`ListDelete`四个函数以及一个`main`函数来调用这些函数。
```cpp
#include <iostream>
using namespace std;
const int MAXSIZE = 100; // 定义最大长度
// 顺序表的结构定义
typedef struct {
int data[MAXSIZE]; // 数组存储数据元素
int length; // 顺序表当前长度
} SeqList;
// 初始化顺序表
void InitList(SeqList &L) {
L.length = 0; // 初始化长度为0
}
// 获取顺序表中第i个位置的元素
bool GetElem(SeqList L, int i, int &e) {
if (i < 1 || i > L.length) {
return false; // 检查i的有效性
}
e = L.data[i - 1]; // 将第i个位置的元素赋给e
return true;
}
// 在顺序表L中的第i个位置插入新元素e
bool ListInsert(SeqList &L, int i, int e) {
if (L.length >= MAXSIZE) {
return false; // 顺序表已满
}
if (i < 1 || i > L.length + 1) {
return false; // 检查i的有效性
}
for (int j = L.length; j >= i; j--) {
L.data[j] = L.data[j - 1]; // 将第i个位置及之后的元素后移
}
L.data[i - 1] = e; // 插入新元素
L.length++;
return true;
}
// 删除顺序表L中的第i个位置的元素,并用e返回其值
bool ListDelete(SeqList &L, int i, int &e) {
if (L.length == 0) {
return false; // 顺序表为空
}
if (i < 1 || i > L.length) {
return false; // 检查i的有效性
}
e = L.data[i - 1];
for (int j = i; j < L.length; j++) {
L.data[j - 1] = L.data[j]; // 将第i个位置之后的元素前移
}
L.length--;
return true;
}
int main() {
SeqList L;
int e;
// 初始化顺序表
InitList(L);
// 插入元素
ListInsert(L, 1, 10);
ListInsert(L, 2, 20);
ListInsert(L, 3, 30);
// 获取元素
if (GetElem(L, 2, e)) {
cout << "The second element is: " << e << endl;
} else {
cout << "Invalid position" << endl;
}
// 删除元素
if (ListDelete(L, 2, e)) {
cout << "Deleted element: " << e << endl;
} else {
cout << "Invalid position" << endl;
}
// 输出顺序表当前长度
cout << "The length of the list is now: " << L.length << endl;
return 0;
}
```
这个代码实现了一个基本的顺序表操作,包含了初始化、获取元素、插入元素和删除元素的功能。`main`函数中还包含了对这些功能的调用和测试。
阅读全文