顺序表删除元素的完整代码
时间: 2024-05-02 21:21:18 浏览: 86
以下是顺序表删除元素的完整代码示例:
```c++
#include <iostream>
using namespace std;
#define MAXSIZE 100 // 定义顺序表最大长度
typedef struct {
int data[MAXSIZE]; // 存储元素的数组
int length; // 当前顺序表长度
} SqList;
// 初始化顺序表
void InitList(SqList &L) {
for (int i = 0; i < MAXSIZE; i++) {
L.data[i] = 0; // 将所有元素初始化为0
}
L.length = 0;
}
// 在顺序表中查找元素,返回元素所在位置的下标,未找到则返回-1
int LocateElem(SqList L, int e) {
for (int i = 0; i < L.length; i++) {
if (L.data[i] == e) {
return i;
}
}
return -1;
}
// 在顺序表中删除指定位置的元素
bool ListDelete(SqList &L, int i) {
if (i < 1 || i > L.length) { // 判断删除位置是否合法
return false;
}
for (int j = i; j < L.length; j++) { // 将删除位置后面的元素依次往前移动一位
L.data[j - 1] = L.data[j];
}
L.length--; // 顺序表长度减1
return true;
}
int main() {
SqList L;
InitList(L);
for (int i = 1; i <= 5; i++) { // 初始化顺序表中的元素
L.data[i - 1] = i;
L.length++;
}
int e = 3; // 要删除的元素
int pos = LocateElem(L, e); // 查找元素所在位置
if (pos != -1) {
ListDelete(L, pos + 1); // 删除元素
cout << "删除成功!" << endl;
for (int i = 0; i < L.length; i++) {
cout << L.data[i] << " "; // 输出删除元素后的顺序表
}
cout << endl;
} else {
cout << "要删除的元素不存在!" << endl;
}
return 0;
}
```
在上面的示例代码中,我们通过调用 `ListDelete` 函数来删除顺序表中指定位置的元素。该函数的参数包括要删除的顺序表 `L` 和要删除的元素位置 `i`,如果删除成功则返回 `true`,否则返回 `false`。在函数内部,我们首先判断删除位置是否合法,然后将删除位置后面的元素依次往前移动一位,最后将顺序表长度减1。在主函数中,我们通过调用 `LocateElem` 函数来查找要删除的元素所在位置,然后再调用 `ListDelete` 函数来删除该元素。最后,我们输出删除元素后的顺序表,以检查删除操作是否成功。
阅读全文