用c语言建立一个顺序表实现初始化,插入,删除,查找运算
时间: 2024-09-12 20:11:34 浏览: 67
在C语言中,顺序表是一种基于数组实现的线性表结构,可以通过数组来存储数据,并通过一些基本操作如初始化、插入、删除和查找来管理这些数据。下面是一个简单的顺序表实现示例:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100 // 定义顺序表的最大长度
// 定义顺序表的结构体
typedef struct {
int data[MAX_SIZE]; // 存储数据的数组
int length; // 顺序表当前长度
} SeqList;
// 初始化顺序表
void InitList(SeqList *list) {
list->length = 0;
}
// 在顺序表的第i个位置插入元素e
int InsertList(SeqList *list, int i, int e) {
if (i < 1 || i > list->length + 1 || list->length == MAX_SIZE) {
return 0; // 插入位置不合法或表满
}
for (int j = list->length; j >= i; j--) {
list->data[j] = list->data[j - 1]; // 将第i个位置及之后的元素后移
}
list->data[i - 1] = e;
list->length++;
return 1; // 插入成功
}
// 删除顺序表的第i个位置的元素,并将该元素的值存储在e中
int DeleteList(SeqList *list, int i, int *e) {
if (i < 1 || i > list->length) {
return 0; // 删除位置不合法
}
*e = list->data[i - 1];
for (int j = i; j < list->length; j++) {
list->data[j - 1] = list->data[j]; // 将第i个位置之后的元素前移
}
list->length--;
return 1; // 删除成功
}
// 查找顺序表中值为e的元素,并返回其位置
int FindList(SeqList *list, int e) {
for (int i = 0; i < list->length; i++) {
if (list->data[i] == e) {
return i + 1; // 返回找到的元素位置
}
}
return 0; // 未找到
}
int main() {
SeqList list;
int element;
InitList(&list); // 初始化顺序表
// 插入元素
InsertList(&list, 1, 10);
InsertList(&list, 2, 20);
InsertList(&list, 3, 30);
// 删除元素
if (DeleteList(&list, 2, &element)) {
printf("删除的元素为:%d\n", element);
} else {
printf("删除失败\n");
}
// 查找元素
int pos = FindList(&list, 30);
if (pos) {
printf("找到元素:%d,位置为:%d\n", 30, pos);
} else {
printf("未找到元素\n");
}
return 0;
}
```
以上代码展示了顺序表的基本操作。请注意,实际使用中还需要考虑更多的边界条件和错误处理,以确保程序的健壮性。
阅读全文