用C语言写一个实现顺序表基本功能的程序
时间: 2023-10-11 13:13:23 浏览: 61
以下是一个简单的实现顺序表基本功能的C语言程序。该程序包括了顺序表的创建、插入、删除、查找和打印等功能。
```c
#include <stdio.h>
#define MAXSIZE 100 // 定义顺序表的最大长度
typedef struct {
int data[MAXSIZE]; // 顺序表的存储空间
int length; // 顺序表的当前长度
} SqList;
// 初始化顺序表
void InitList(SqList *L) {
L->length = 0;
}
// 插入元素
int ListInsert(SqList *L, int pos, int elem) {
if (pos < 1 || pos > L->length + 1 || L->length == MAXSIZE) {
return 0; // 插入位置不合法或顺序表已满,插入失败
}
for (int i = L->length; i >= pos; i--) {
L->data[i] = L->data[i - 1]; // 将pos及之后的元素向后移动一位
}
L->data[pos - 1] = elem; // 在pos处插入新元素
L->length++; // 顺序表长度加1
return 1; // 插入成功
}
// 删除元素
int ListDelete(SqList *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]; // 将pos之后的元素向前移动一位
}
L->length--; // 顺序表长度减1
return 1; // 删除成功
}
// 查找元素
int ListSearch(SqList *L, int elem) {
for (int i = 0; i < L->length; i++) {
if (L->data[i] == elem) {
return i + 1; // 返回元素在顺序表中的位置
}
}
return 0; // 未找到元素
}
// 打印顺序表
void PrintList(SqList *L) {
for (int i = 0; i < L->length; i++) {
printf("%d ", L->data[i]);
}
printf("\n");
}
int main() {
SqList L;
InitList(&L);
ListInsert(&L, 1, 10);
ListInsert(&L, 2, 20);
ListInsert(&L, 3, 30);
PrintList(&L); // 输出:10 20 30
ListDelete(&L, 2);
PrintList(&L); // 输出:10 30
int pos = ListSearch(&L, 30);
printf("元素30的位置是:%d\n", pos); // 输出:2
return 0;
}
```