用c++写一个顺序表完成正删改查
时间: 2023-07-04 09:14:54 浏览: 48
好的,以下是用 C++ 编写的顺序表的增删改查代码示例:
```cpp
#include<iostream>
using namespace std;
const int MAXSIZE = 100; // 定义线性表的最大长度
typedef struct {
int data[MAXSIZE]; // 存储数据元素
int length; // 线性表当前长度
} SqList;
// 初始化线性表
void InitList(SqList &L) {
L.length = 0;
}
// 判断线性表是否为空
bool ListEmpty(SqList L) {
return (L.length == 0);
}
// 获取线性表中第 i 个元素
bool GetElem(SqList L, int i, int &e) {
if(i < 1 || i > L.length) {
return false;
}
e = L.data[i-1];
return true;
}
// 在线性表中查找元素 e 的位置
int LocateElem(SqList L, int e) {
for(int i = 0; i < L.length; i++) {
if(L.data[i] == e) {
return i+1;
}
}
return 0;
}
// 在线性表的第 i 个位置插入元素 e
bool ListInsert(SqList &L, int i, int e) {
if(i < 1 || i > L.length+1 || L.length == MAXSIZE) {
return false;
}
for(int j = L.length; j >= i; j--) {
L.data[j] = L.data[j-1];
}
L.data[i-1] = e;
L.length++;
return true;
}
// 删除线性表中第 i 个位置的元素
bool ListDelete(SqList &L, int i, int &e) {
if(i < 1 || i > L.length) {
return false;
}
e = L.data[i-1];
for(int j = i; j < L.length; j++) {
L.data[j-1] = L.data[j];
}
L.length--;
return true;
}
int main() {
SqList L;
InitList(L);
ListInsert(L, 1, 10);
ListInsert(L, 2, 20);
ListInsert(L, 3, 30);
int e;
if(GetElem(L, 2, e)) {
cout << "第2个元素的值为:" << e << endl;
}
if(ListDelete(L, 2, e)) {
cout << "删除的元素值为:" << e << endl;
}
cout << "线性表中的元素为:";
for(int i = 0; i < L.length; i++) {
cout << L.data[i] << " ";
}
cout << endl;
return 0;
}
```
以上代码中,我们定义了一个结构体 `SqList` 表示线性表,包括 `data` 数组和 `length` 表示当前线性表长度。在 `main` 函数中,我们初始化了一个顺序表 `L`,并且插入了三个元素。然后通过 `GetElem` 函数获取了第 2 个元素的值,通过 `ListDelete` 函数删除了第 2 个元素,最后输出了线性表中的元素。
这些函数的具体实现参见代码注释。