线性表顺序存储代码实现
时间: 2023-10-11 19:08:05 浏览: 147
线性表的顺序存储与实现
线性表的顺序存储可以通过静态分配和动态分配两种方式实现。静态分配是指使用数组来存储线性表的元素,而动态分配是指使用指针和malloc函数来分配存储空间。下面是一段简单的代码实现线性表顺序存储:
```
typedef struct {
ElemType data[MaxSize]; // 存放顺序表元素
int length; // 存放顺序表的长度
} SqList;
void InitList(SqList *&L) {
L = (SqList *)malloc(sizeof(SqList)); // 分配存放线性表的空间
L->length = 0; // 顺序表长度置0
}
void DestroyList(SqList *&L) {
free(L); // 释放线性表的空间
}
bool ListEmpty(SqList *L) {
return L->length == 0;
}
int ListLength(SqList *L) {
return L->length;
}
void GetElem(SqList *L, int i, ElemType &e) {
if (i < 1 || i > L->length) {
return;
}
e = L->data[i - 1];
}
int LocateElem(SqList *L, ElemType e) {
for (int i = 0; i < L->length; i++) {
if (L->data[i] == e) {
return i + 1;
}
}
return 0;
}
bool ListInsert(SqList *&L, int i, ElemType e) {
if (i < 1 || i > L->length + 1) {
return false;
}
if (L->length == MaxSize) {
return false;
}
for (int j = L->length - 1; j >= i - 1; j--) {
L->data[j + 1] = L->data[j];
}
L->data[i - 1] = e;
L->length++;
return true;
}
bool ListDelete(SqList *&L, int i, ElemType &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;
}
```
这段代码实现了线性表顺序存储的基本操作,包括初始化线性表、销毁线性表、判断线性表是否为空、获取线性表长度、获取指定位置的元素、查找指定元素的位置、在指定位置插入元素和删除指定位置的元素。
阅读全文