顺序表的基本操作c++
时间: 2023-08-10 17:07:33 浏览: 39
顺序表是一种线性表,可以使用数组来实现。下面是顺序表的基本操作 C++ 实现:
1. 初始化顺序表
```c++
const int MAXSIZE = 100; // 定义顺序表最大长度
typedef struct {
int data[MAXSIZE]; // 用数组存储顺序表元素
int length; // 顺序表当前长度
} SqList; // 定义顺序表类型
void InitList(SqList &L) {
L.length = 0; // 初始化顺序表长度为0
}
```
2. 插入元素
```c++
bool ListInsert(SqList &L, int pos, int e) {
if (pos < 1 || pos > L.length + 1) {
return false; // 插入位置不合法,返回false
}
if (L.length >= MAXSIZE) {
return false; // 顺序表已满,返回false
}
for (int i = L.length; i >= pos; i--) {
L.data[i] = L.data[i - 1]; // 将pos及之后的元素后移
}
L.data[pos - 1] = e; // 插入元素
L.length++; // 顺序表长度加1
return true;
}
```
3. 删除元素
```c++
bool ListDelete(SqList &L, int pos, int &e) {
if (pos < 1 || pos > L.length) {
return false; // 删除位置不合法,返回false
}
e = L.data[pos - 1]; // 将要删除的元素保存到e中
for (int i = pos; i < L.length; i++) {
L.data[i - 1] = L.data[i]; // 将pos之后的元素前移
}
L.length--; // 顺序表长度减1
return true;
}
```
4. 查找元素
```c++
int LocateElem(SqList L, int e) {
for (int i = 0; i < L.length; i++) {
if (L.data[i] == e) {
return i + 1; // 返回第一个值为e的元素的位置
}
}
return 0; // 顺序表中不存在值为e的元素,返回0
}
```
5. 获取元素
```c++
bool GetElem(SqList L, int pos, int &e) {
if (pos < 1 || pos > L.length) {
return false; // 获取位置不合法,返回false
}
e = L.data[pos - 1]; // 获取元素
return true;
}
```
注意:这里的 pos 从1开始算起,而不是从0开始算起。