用C语言编写一个顺序表(能实现基本操作且带注释)
时间: 2023-06-08 17:04:19 浏览: 103
好的,这是一个编写顺序表的示例代码,仅供参考:
```c
#include <stdio.h>
#include <stdlib.h>
#define MaxSize 50
typedef int ElementType;
typedef struct {
ElementType data[MaxSize];
int length;
} SeqList;
// 初始化
void InitList(SeqList *L) {
L->length = 0;
}
// 判断是否为空表
int ListEmpty(SeqList L) {
return L.length == 0;
}
// 获取表长
int ListLength(SeqList L) {
return L.length;
}
// 获取指定位置的元素
int GetElem(SeqList L, int pos, ElementType *e) {
if (pos < 1 || pos > L.length)
return 0;
else {
*e = L.data[pos - 1];
return 1;
}
}
// 查找元素的位置
int LocateElem(SeqList L, ElementType e) {
for (int i = 0; i < L.length; i++) {
if (L.data[i] == e)
return i + 1;
}
return 0;
}
// 插入元素
int ListInsert(SeqList *L, int pos, ElementType e) {
if (L->length == MaxSize || pos < 1 || pos > L->length + 1)
return 0;
for (int i = L->length - 1; i >= pos - 1; i--) {
L->data[i + 1] = L->data[i];
}
L->data[pos - 1] = e;
L->length++;
return 1;
}
// 删除指定位置的元素
int ListDelete(SeqList *L, int pos, ElementType *e) {
if (pos < 1 || pos > L->length)
return 0;
*e = L->data[pos - 1];
for (int i = pos; i < L->length; i++) {
L->data[i - 1] = L->data[i];
}
L->length--;
return 1;
}
// 打印顺序表
void PrintList(SeqList L) {
printf("SeqList: ");
for (int i = 0; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
}
int main() {
SeqList L;
ElementType e;
InitList(&L);
for (int i = 1; i <= 10; i++) {
ListInsert(&L, i, i);
}
PrintList(L);
ListDelete(&L, 5, &e);
PrintList(L);
GetElem(L, 3, &e);
printf("The element at position 3 is %d\n", e);
printf("The position of element 8 is %d\n", LocateElem(L, 8));
return 0;
}
```
这份代码实现了顺序表的基本操作,包括初始化、判断是否为空表、获取表长、获取指定位置的元素、查找元素的位置、插入元素、删除元素和打印列表。在使用时可以根据需要调用相应的函数。
阅读全文