参考王道《2023年数据结构考研复习指导》
#include <iostream>
#define MaxSize 10
typedef int ElemType;
typedef struct {
ElemType data[MaxSize];
int length;
} SqlList;
// 初始化顺序表
void InitList(SqlList& L) {
for (int i = 0; i < MaxSize; ++i) {
L.data[i] = 0;
}
L.length = 0;
}
// 在顺序表的第i(1 <= i <= L.length + 1)个位置插入新元素e
bool ListInsert(SqlList& L, int i, ElemType e) {
if (i < 1 || i > L.length + 1) { // 判断i的范围是否有效
return false;
}
if (L.length >= MaxSize) { // 当前存储空间已满,不能插入
return false;
}
for (int j = L.length; j >= i; --j) { // 将第i个元素及之后的元素后移
L.data[j] = L.data[j - 1];
}
L.data[i - 1] = e; // 在位置i处放入e
L.length++;
return true;
}
// 删除顺序表中第i(1 <= i <= L.length + 1)个位置的元素,用引用变量e返回
bool ListDelete(SqlList& L, int i, ElemType& e) {
if (i < 1 || i > L.length + 1) { // 判断i的范围是否有效
return false;
}
e = L.data[i - 1];
for (int j = i; j < L.length; ++j) { // 将第i个位置之后的元素前移
L.data[j - 1] = L.data[j];
}
L.length--;
return true;
}
// 在顺序表L中查找第一个元素值等于e的元素,并返回其位序
int LocateElem(SqlList L, ElemType e) {
for (int i = 0; i < L.length; ++i) {
if (L.data[i] == e)
return i + 1; // 返回位序
}
return 0; // 查找失败
}
int main() {
SqlList L = { {1, 2, 3, 4, 5, 6}, 6 };
ElemType e;
ListDelete(L, 6, e);
std::cout << e << std::endl;
std::cout << LocateElem(L, 3) << std::endl;
system("pause");
return 0;
}
顺序表没什么好说的,比较简单