用C语言创建一个顺序表,有输入,查询,取值,插入,删除,输出的功能
时间: 2024-05-03 11:22:51 浏览: 93
以下是使用C语言实现顺序表的完整代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
typedef struct {
int data[MAX_SIZE];
int length;
} SqList;
// 初始化顺序表
void initList(SqList *L) {
L->length = 0;
}
// 插入元素
int insertElem(SqList *L, int pos, int val) {
// 判断插入位置是否合法
if (pos < 1 || pos > L->length + 1) {
return 0;
}
// 判断顺序表是否已满
if (L->length >= MAX_SIZE) {
return 0;
}
// 在pos位置插入val
for (int i = L->length; i >= pos; i--) {
L->data[i] = L->data[i - 1];
}
L->data[pos - 1] = val;
L->length++;
return 1;
}
// 删除元素
int deleteElem(SqList *L, int pos) {
// 判断删除位置是否合法
if (pos < 1 || pos > L->length) {
return 0;
}
// 删除pos位置的元素
for (int i = pos; i < L->length; i++) {
L->data[i - 1] = L->data[i];
}
L->length--;
return 1;
}
// 查询元素
int searchElem(SqList *L, int val) {
for (int i = 0; i < L->length; i++) {
if (L->data[i] == val) {
return i + 1;
}
}
return 0;
}
// 取值
int getElem(SqList *L, int pos) {
// 判断位置是否合法
if (pos < 1 || pos > L->length) {
return -1;
}
return L->data[pos - 1];
}
// 输出顺序表
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);
int choice, pos, val;
while (1) {
printf("1. 插入元素\n");
printf("2. 删除元素\n");
printf("3. 查询元素\n");
printf("4. 取值\n");
printf("5. 输出顺序表\n");
printf("6. 退出程序\n");
printf("请选择操作:");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("请输入插入位置和元素值:");
scanf("%d%d", &pos, &val);
if (insertElem(&L, pos, val)) {
printf("插入成功\n");
} else {
printf("插入失败\n");
}
break;
case 2:
printf("请输入删除位置:");
scanf("%d", &pos);
if (deleteElem(&L, pos)) {
printf("删除成功\n");
} else {
printf("删除失败\n");
}
break;
case 3:
printf("请输入查询元素值:");
scanf("%d", &val);
pos = searchElem(&L, val);
if (pos) {
printf("元素位置为%d\n", pos);
} else {
printf("元素不存在\n");
}
break;
case 4:
printf("请输入取值位置:");
scanf("%d", &pos);
val = getElem(&L, pos);
if (val != -1) {
printf("取值为%d\n", val);
} else {
printf("位置非法\n");
}
break;
case 5:
printf("顺序表内容为:");
printList(&L);
break;
case 6:
printf("退出程序\n");
exit(0);
default:
printf("输入非法,请重新输入\n");
}
}
return 0;
}
```
使用上述代码可以创建一个支持输入、查询、取值、插入、删除、输出功能的顺序表。用户通过在命令行中输入对应的操作选项,可以实现相应的功能。
阅读全文