请用C语言实现一个对顺序表进行基本操作的系统,主要包括表的创建、输入、查询、取值、插入、删除和输出的操作
时间: 2023-12-20 17:04:59 浏览: 106
以下是一个简单的顺序表实现,包括基本操作:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef struct {
int data[MAXSIZE];
int length;
} SqList;
void InitList(SqList *L) {
L->length = 0;
}
void CreateList(SqList *L) {
int n, i;
printf("请输入元素个数:");
scanf("%d", &n);
printf("请输入%d个元素:", n);
for (i = 0; i < n; i++) {
scanf("%d", &L->data[i]);
}
L->length = n;
}
void PrintList(SqList L) {
int i;
printf("顺序表中的元素为:");
for (i = 0; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
}
int LocateElem(SqList L, int e) {
int i;
for (i = 0; i < L.length; i++) {
if (L.data[i] == e) {
return i+1;
}
}
return 0;
}
int GetElem(SqList L, int i) {
if (i < 1 || i > L.length) {
printf("错误:无效的位置\n");
exit(1);
}
return L.data[i-1];
}
void ListInsert(SqList *L, int i, int e) {
int j;
if (i < 1 || i > L->length+1) {
printf("错误:无效的位置\n");
exit(1);
}
if (L->length == MAXSIZE) {
printf("错误:顺序表已满\n");
exit(1);
}
for (j = L->length-1; j >= i-1; j--) {
L->data[j+1] = L->data[j];
}
L->data[i-1] = e;
L->length++;
}
void ListDelete(SqList *L, int i) {
int j;
if (i < 1 || i > L->length) {
printf("错误:无效的位置\n");
exit(1);
}
for (j = i-1; j < L->length-1; j++) {
L->data[j] = L->data[j+1];
}
L->length--;
}
int main() {
SqList L;
int choice, e, i;
InitList(&L);
while (1) {
printf("请选择操作:\n");
printf("1. 创建表\n");
printf("2. 查询元素位置\n");
printf("3. 获取元素值\n");
printf("4. 插入元素\n");
printf("5. 删除元素\n");
printf("6. 输出表\n");
printf("7. 退出\n");
scanf("%d", &choice);
switch (choice) {
case 1:
CreateList(&L);
break;
case 2:
printf("请输入要查询的元素:");
scanf("%d", &e);
i = LocateElem(L, e);
if (i == 0) {
printf("未找到该元素\n");
} else {
printf("元素%d的位置为%d\n", e, i);
}
break;
case 3:
printf("请输入要获取的元素位置:");
scanf("%d", &i);
e = GetElem(L, i);
printf("第%d个元素的值为%d\n", i, e);
break;
case 4:
printf("请输入要插入的位置和元素值:");
scanf("%d%d", &i, &e);
ListInsert(&L, i, e);
break;
case 5:
printf("请输入要删除的位置:");
scanf("%d", &i);
ListDelete(&L, i);
break;
case 6:
PrintList(L);
break;
case 7:
exit(0);
default:
printf("错误:无效的选项\n");
}
}
return 0;
}
```
注意:此代码并未对所有错误情况进行处理,仅作为示例。
阅读全文