线性表的顺序存储结构及实现
时间: 2024-06-12 09:10:10 浏览: 133
线性表的顺序存储结构是指用一段地址连续的存储单元依次存储线性表的数据元素,同时为了方便操作,通常在存储区的前面预留一个存储单元作为线性表的头结点,头结点不存储数据元素,其主要作用是记录线性表的长度和指向第一个数据元素的指针。
实现顺序存储结构的线性表需要定义一个结构体来表示线性表,其中包括数据存储区和头结点。具体实现可以参考以下代码:
```
#define MAXSIZE 100 // 定义线性表的最大长度
typedef struct {
int data[MAXSIZE]; // 存储数据元素的数组
int length; // 线性表的当前长度
} SqList;
// 初始化线性表
void InitList(SqList &L) {
L.length = 0;
}
// 插入元素
bool ListInsert(SqList &L, int i, int e) {
if (i < 1 || i > L.length + 1 || L.length == MAXSIZE) {
return false; // 插入位置不合法或线性表已满
}
for (int j = L.length; j >= i; j--) {
L.data[j] = L.data[j - 1]; // 将插入位置后的元素依次后移
}
L.data[i - 1] = e; // 插入新元素
L.length++; // 线性表长度加1
return true;
}
// 删除元素
bool ListDelete(SqList &L, int i, int &e) {
if (i < 1 || i > L.length) {
return false; // 删除位置不合法
}
e = L.data[i - 1]; // 将被删除的元素赋值给e
for (int j = i; j < L.length; j++) {
L.data[j - 1] = L.data[j]; // 将删除位置后的元素依次前移
}
L.length--; // 线性表长度减1
return true;
}
```
阅读全文