在数据结构的世界里,顺序表是一种基础且重要的结构。它通常使用数组来实现,提供了快速的随机访问能力。本文将介绍如何在C语言中实现一个简单的顺序表,包括初始化、插入、删除和打印操作。
1.定义顺序表结构体
首先,我们需要定义一个结构体来表示顺序表:
#define Max_Size 100
typedef int ElemType;
typedef struct {
ElemType* data; //存放线性表中的长度
int length; //存放线性表长度
}Seqlist; //顺序表类型
2.初始化顺序表
接下来,我们需要实现一个初始化函数,为顺序表分配内存,并设置初始长度和容量:
// 创建顺序表
void initSeqlist(Seqlist* L) {
L->data = (ElemType*)malloc(sizeof(ElemType)*Max_Size);
if(L->data == NULL) {
printf("顺序表创建失败\n");
}
L->length = 0;
}
3.插入元素
3.1顺序表头插
//顺序表头插
void insertATBegining(Seqlist* L) {
int elem = 0;
printf("请输入要头插的元素:\n");
scanf("%d",&elem);
if(L->length >= Max_Size) {
printf("顺序表已满,无法插入");
}
else {
for (int i = L->length - 1; i >= 0; i--) {
L->data[i + 1] = L->data[i];
}
L->data[0] = elem;
L->length++;
}
}
3.2 顺序表尾插
//顺序表尾插
void insertAtBegining(Seqlist* L) {
int elem = 0;
printf("请输入要尾插的元素:\n");
scanf("%d",&elem);
if(L->length >= Max_Size) {
printf("顺序表已满,无法插入");
}
else {
L->data[L->length] = elem;
L->length++;
}
}
4.删除顺序表指定元素
//删除指定元素
void DetateElem(Seqlist* L) {
int elem = 0;
printf("请输入要删除的元素:\n");
scanf("%d",&elem);
for (int i = 0; i < L->length; i++) {
if(L->data[i] == elem) {
for (int j = i; j < L->length - 1; j++) {
L->data[j] = L->[j + 1];
}
L->length--;
}
}
}
5.查找元素
// 查找元素是否在顺序表中
bool findelem(Seqlist* L) {
int elem = 0;
printf("请输入要查找的元素:\n");
scanf("%d",&elem);
for (int i = 0; i < L->length; i++) {
if (L->data[i] == elem) {
return true;
}
}
return false;
}
6.输出顺序表
// 输出顺序表
void DispSeqlise(Seqlist* L) {
if(L->length == 0) {
printf("线性表为空\n");
}
for (int i = 0; i < L->length; i++) {
printf("%d",L->data[i]);
}
}
7.销毁顺序表
// 销毁顺序表
void deleteSeqlist(Seqlist* L) {
free(L);
}