用一个c语言程序演示顺序表编历
时间: 2024-03-09 08:47:56 浏览: 50
好的,以下是一个简单的顺序表的实现,包括了创建、插入、删除、查找和遍历等基本操作。
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100 // 顺序表的最大容量
typedef struct {
int data[MAXSIZE]; // 存储数据的数组
int length; // 当前长度
} SeqList;
// 初始化顺序表
void InitList(SeqList *L) {
L->length = 0;
}
// 插入元素
int ListInsert(SeqList *L, int index, int e) {
if (index < 1 || index > L->length + 1) // 判断插入位置是否合法
return 0;
if (L->length >= MAXSIZE) // 判断顺序表是否已满
return 0;
for (int i = L->length; i >= index; i--) // 将插入位置之后的元素依次后移
L->data[i] = L->data[i - 1];
L->data[index - 1] = e; // 插入新元素
L->length++; // 长度加1
return 1;
}
// 删除元素
int ListDelete(SeqList *L, int index) {
if (index < 1 || index > L->length) // 判断删除位置是否合法
return 0;
for (int i = index - 1; i < L->length - 1; i++) // 将删除位置之后的元素依次前移
L->data[i] = L->data[i + 1];
L->length--; // 长度减1
return 1;
}
// 查找元素
int LocateElem(SeqList L, int e) {
for (int i = 0; i < L.length; i++) {
if (L.data[i] == e)
return i + 1; // 返回元素在顺序表中的位置
}
return 0; // 未找到元素
}
// 遍历顺序表
void TraverseList(SeqList L) {
for (int i = 0; i < L.length; i++)
printf("%d ", L.data[i]);
printf("\n");
}
int main() {
SeqList L;
InitList(&L);
ListInsert(&L, 1, 1);
ListInsert(&L, 2, 2);
ListInsert(&L, 3, 3);
TraverseList(L);
ListDelete(&L, 2);
TraverseList(L);
printf("2 is at position %d\n", LocateElem(L, 2));
return 0;
}
```
以上代码中,我们使用结构体定义了一个顺序表,其中 `data` 数组用来存储数据元素, `length` 变量表示当前顺序表的长度。
通过 `InitList` 函数可以初始化一个空的顺序表。 `ListInsert` 函数可以在指定位置插入一个元素, `ListDelete` 函数可以删除指定位置的元素。 `LocateElem` 函数可以查找指定元素在顺序表中的位置。 `TraverseList` 函数可以遍历整个顺序表并打印每个元素。
在 `main` 函数中,我们演示了如何使用这些函数来操作顺序表。
阅读全文