用c语言写个顺序表并注释
时间: 2023-12-10 09:36:56 浏览: 87
用c语言实现顺序表
好的,下面是一个简单的顺序表的实现,附带注释说明:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100 // 定义顺序表最大容量
typedef int DataType; // 定义顺序表中元素的数据类型
typedef struct {
DataType data[MAX_SIZE]; // 存储元素的数组
int length; // 当前顺序表中元素的个数
} SeqList;
// 初始化顺序表
void InitList(SeqList *list) {
list->length = 0; // 初始时顺序表中元素个数为0
}
// 在顺序表的末尾插入元素
int InsertList(SeqList *list, int pos, DataType value) {
// 如果顺序表已满,则无法插入新元素
if (list->length >= MAX_SIZE) {
return 0;
}
// 如果插入位置不合法,则无法插入新元素
if ((pos < 1) || (pos > list->length + 1)) {
return 0;
}
// 将插入位置之后的元素全部后移一位
for (int i = list->length; i >= pos; i--) {
list->data[i] = list->data[i - 1];
}
// 在插入位置处存储新元素
list->data[pos - 1] = value;
// 更新顺序表中元素个数
list->length++;
return 1;
}
// 在顺序表中删除指定位置的元素
int DeleteList(SeqList *list, int pos) {
// 如果删除位置不合法,则无法删除元素
if ((pos < 1) || (pos > list->length)) {
return 0;
}
// 将删除位置之后的元素全部前移一位
for (int i = pos; i < list->length; i++) {
list->data[i - 1] = list->data[i];
}
// 更新顺序表中元素个数
list->length--;
return 1;
}
// 在顺序表中查找指定元素的位置
int SearchList(SeqList *list, DataType value) {
for (int i = 0; i < list->length; i++) {
if (list->data[i] == value) {
return i + 1;
}
}
return 0;
}
// 输出顺序表中的所有元素
void PrintList(SeqList *list) {
printf("List: ");
for (int i = 0; i < list->length; i++) {
printf("%d ", list->data[i]);
}
printf("\n");
}
int main() {
SeqList list;
InitList(&list);
InsertList(&list, 1, 10);
InsertList(&list, 2, 20);
InsertList(&list, 3, 30);
PrintList(&list);
DeleteList(&list, 2);
PrintList(&list);
return 0;
}
```
注释说明:
- 第1行和第2行:引入需要的头文件。
- 第4行:定义顺序表的最大容量。
- 第6行:定义顺序表中元素的数据类型。
- 第8行至第13行:定义顺序表的结构体,包括一个存储元素的数组和一个记录元素个数的变量。
- 第15行至第18行:初始化顺序表,将顺序表中元素个数初始化为0。
- 第20行至第35行:在顺序表的指定位置插入元素,如果顺序表已满或者插入位置不合法,则返回0;否则将插入位置之后的元素全部后移一位,然后在插入位置处存储新元素,最后更新顺序表中元素个数,并返回1。
- 第37行至第52行:在顺序表中删除指定位置的元素,如果删除位置不合法,则返回0;否则将删除位置之后的元素全部前移一位,然后更新顺序表中元素个数,并返回1。
- 第54行至第64行:在顺序表中查找指定元素的位置,如果找到则返回该元素的位置,否则返回0。
- 第66行至第74行:输出顺序表中的所有元素。
- 第76行至第86行:主函数中进行测试,创建一个顺序表并进行插入、删除和输出操作。
希望这份代码和注释对你有所帮助!
阅读全文