顺序表的建立
时间: 2023-08-05 13:07:34 浏览: 52
顺序表是一种基于数组的线性数据结构,可以用来表示有限个相同类型的元素序列。下面是顺序表的建立过程:
1. 定义结构体类型
首先需要定义一个结构体类型来表示顺序表,包括以下两个成员:
- data:用来存储顺序表中的元素
- length:用来记录顺序表中元素的个数
```c
#define MAXSIZE 100 // 定义顺序表的最大长度
typedef struct {
int data[MAXSIZE];
int length;
} SqList;
```
2. 初始化顺序表
在建立顺序表之前,需要先对其进行初始化,即将其长度设置为 0。
```c
void InitList(SqList *L) {
L->length = 0;
}
```
3. 插入元素
顺序表的插入操作就是在指定位置上插入一个元素,同时需要将该位置后面的所有元素依次后移。假设要在第 i 个位置上插入元素 e,插入过程如下:
```c
bool ListInsert(SqList *L, int i, int e) {
if (i < 1 || i > L->length + 1 || L->length == MAXSIZE) {
return false; // i 不合法或者顺序表已满,返回插入失败
}
for (int j = L->length; j >= i; j--) {
L->data[j] = L->data[j-1]; // 将第 i 个位置及其后面的元素后移
}
L->data[i-1] = e; // 将新元素 e 插入到第 i 个位置
L->length++; // 长度加 1
return true;
}
```
4. 删除元素
顺序表的删除操作就是删除指定位置上的元素,同时需要将该位置后面的所有元素依次前移。假设要删除第 i 个位置上的元素,删除过程如下:
```c
bool ListDelete(SqList *L, int i) {
if (i < 1 || i > L->length) {
return false; // i 不合法,返回删除失败
}
for (int j = i; j < L->length; j++) {
L->data[j-1] = L->data[j]; // 将第 i 个位置后面的元素前移
}
L->length--; // 长度减 1
return true;
}
```
5. 访问元素
顺序表中的元素可以通过下标来直接访问,下标从 0 开始,最大值为 length-1。
```c
int GetElem(SqList L, int i) {
if (i < 1 || i > L.length) {
return -1; // i 不合法,返回 -1 表示访问失败
}
return L.data[i-1];
}
```
这样就完成了顺序表的建立。