数据结构数组实验增删改查
时间: 2023-12-26 13:06:56 浏览: 74
数据的增删改查
4星 · 用户满意度95%
以下是使用C语言的一维数组实现线性表的顺序存储的数据结构数组实验增删改查的例子:
1. 数组初始化
```c
#define MAXSIZE 100 // 定义数组的最大长度
typedef struct {
int data[MAXSIZE]; // 存储数据元素的一维数组
int length; // 线性表的当前长度
} SqList; // 顺序表的类型定义
// 初始化一个空的顺序表
void InitList(SqList *L) {
for (int i = 0; i < MAXSIZE; i++) {
L->data[i] = 0;
}
L->length = 0;
}
```
2. 插入元素
```c
// 在顺序表的第i个位置插入新元素e
bool ListInsert(SqList *L, int i, int e) {
if (i < 1 || i > L->length + 1) {
return false; // i的位置不合法
}
if (L->length >= MAXSIZE) {
return false; // 顺序表已满
}
for (int j = L->length; j >= i; j--) {
L->data[j] = L->data[j - 1]; // 将第i个位置及之后的元素后移
}
L->data[i - 1] = e; // 插入新元素e
L->length++; // 线性表长度加1
return true;
}
```
3. 删除元素
```c
// 删除顺序表的第i个位置的元素,并用e返回其值
bool ListDelete(SqList *L, int i, int *e) {
if (i < 1 || i > L->length) {
return false; // i的位置不合法
}
*e = L->data[i - 1]; // 用e返回被删除的元素值
for (int j = i; j < L->length; j++) {
L->data[j - 1] = L->data[j]; // 将第i个位置之后的元素前移
}
L->length--; // 线性表长度减1
return true;
}
```
4. 修改元素
```c
// 修改顺序表的第i个位置的元素为新元素e
bool ListUpdate(SqList *L, int i, int e) {
if (i < 1 || i > L->length) {
return false; // i的位置不合法
}
L->data[i - 1] = e; // 修改第i个位置的元素为新元素e
return true;
}
```
5. 查找元素
```c
// 查找顺序表中第一个值为e的元素,并返回其位置
int LocateElem(SqList *L, int e) {
for (int i = 0; i < L->length; i++) {
if (L->data[i] == e) {
return i + 1; // 返回元素位置
}
}
return 0; // 未找到元素e
}
```
阅读全文