线性表的顺序存储结构的基本操作代码
时间: 2023-09-23 20:07:39 浏览: 94
c代码-线性表顺序存储结构
下面是线性表顺序存储结构的基本操作代码(以 C 语言为例):
定义结构体:
```c
#define MAXSIZE 100
typedef struct {
int data[MAXSIZE]; // 存储数据元素
int length; // 线性表当前长度
} SqList;
```
初始化:
```c
// 初始化一个空的线性表
void InitList(SqList *L) {
L->length = 0;
}
```
插入:
```c
// 在第 i 个位置插入元素 e
bool ListInsert(SqList *L, int i, int 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; // 插入新元素
L->length++; // 线性表长度加一
return true;
}
```
删除:
```c
// 删除第 i 个位置的元素,并将其值赋给 e
bool ListDelete(SqList *L, int i, int *e) {
if (i < 1 || i > L->length) // i 不合法
return false;
*e = L->data[i-1]; // 将被删除元素的值赋给 e
for (int j = i; j < L->length; j++) { // 将第 i 个位置之后的元素前移
L->data[j-1] = L->data[j];
}
L->length--; // 线性表长度减一
return true;
}
```
查找:
```c
// 根据值查找元素并返回其位置
int LocateElem(SqList *L, int e) {
for (int i = 0; i < L->length; i++) {
if (L->data[i] == e)
return i+1; // 返回元素在线性表中的位置
}
return 0; // 没有找到
}
```
获取元素:
```c
// 获取第 i 个位置的元素的值
bool GetElem(SqList *L, int i, int *e) {
if (i < 1 || i > L->length) // i 不合法
return false;
*e = L->data[i-1]; // 将元素的值赋给 e
return true;
}
```
修改元素:
```c
// 将第 i 个位置的元素的值修改为 e
bool ListUpdate(SqList *L, int i, int e) {
if (i < 1 || i > L->length) // i 不合法
return false;
L->data[i-1] = e; // 修改元素的值
return true;
}
```
阅读全文