数据结构顺序表代码
时间: 2023-07-10 18:22:48 浏览: 47
下面是一个简单的顺序表的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100 // 最大长度
typedef struct {
int data[MAX_SIZE]; // 存放数据元素的数组
int length; // 存放线性表长度
} SeqList;
// 初始化顺序表
void InitList(SeqList *L) {
L->length = 0;
}
// 在指定位置插入元素
int Insert(SeqList *L, int pos, int elem) {
if (pos < 1 || pos > L->length + 1) {
return 0; // 插入位置不合法
}
if (L->length >= MAX_SIZE) {
return -1; // 线性表已满
}
for (int i = L->length; i >= pos; i--) {
L->data[i] = L->data[i - 1]; // 后移
}
L->data[pos - 1] = elem;
L->length++;
return 1; // 成功插入
}
// 删除指定位置的元素
int Delete(SeqList *L, int pos) {
if (pos < 1 || pos > L->length) {
return 0; // 删除位置不合法
}
for (int i = pos; i < L->length; i++) {
L->data[i - 1] = L->data[i]; // 前移
}
L->length--;
return 1; // 成功删除
}
// 获取指定位置的元素
int GetElem(SeqList L, int pos) {
if (pos < 1 || pos > L.length) {
return 0; // 获取位置不合法
}
return L.data[pos - 1];
}
int main() {
SeqList L;
InitList(&L);
Insert(&L, 1, 10);
Insert(&L, 1, 20);
Insert(&L, 2, 30);
Insert(&L, 1, 40);
for (int i = 1; i <= L.length; i++) {
printf("%d ", GetElem(L, i));
}
printf("\n");
Delete(&L, 2);
for (int i = 1; i <= L.length; i++) {
printf("%d ", GetElem(L, i));
}
printf("\n");
return 0;
}
```
顺序表的主要操作包括初始化、插入、删除和获取元素,上述代码中实现了这些操作,可以作为参考。