顺序表是一种线性数据结构,它按照元素在内存中的物理顺序存储数据。顺序表可以通过数组实现,也可以通过链表和动态数组实现。
void InitList(SeqList &L) {
L.data = new ElemType[MAXSIZE];
L.length = 0;
}
bool ListInsert(SeqList &L, int pos, ElemType e) {
if (pos < 1 || pos > L.length + 1) {
return false; // 插入位置非法
}
if (L.length == MAXSIZE) {
return false; // 顺序表已满
}
for (int i = L.length; i >= pos; i--) {
L.data[i] = L.data[i - 1]; // 插入位置及之后的元素后移
}
L.data[pos - 1] = e; // 插入新元素
L.length++;
return true;
}
bool ListDelete(SeqList &L, int pos, ElemType &e) {
if (pos < 1 || pos > L.length) {
return false; // 删除位置非法
}
e = L.data[pos - 1]; // 保存被删除的元素
for (int i = pos; i < L.length; i++) {
L.data[i - 1] = L.data[i]; // 被删除位置之后的元素前移
}
L.length--;
return true;
}
int LocateElem(SeqList L, ElemType e) {
for (int i = 0; i < L.length; i++) {
if (L.data[i] == e) {
return i + 1; // 返回元素位置
}
}
return 0; // 未找到元素
}
bool GetElem(SeqList L, int pos, ElemType &e) {
if (pos < 1 || pos > L.length) {
return false; // 获取位置非法
}
e = L.data[pos - 1];
return true;
}
void ClearList(SeqList &L) {
L.length = 0;
}