请使用c语言实现一个对顺序表进行基本操作的系统,主要包括表的创建,输入,查询,取值,插入,删除和输出等操作
时间: 2024-05-09 09:20:41 浏览: 82
c语言实现顺序表的基本操作
5星 · 资源好评率100%
以下是一个基本的顺序表操作系统的实现:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
typedef struct {
int data[MAX_SIZE];
int length;
} List;
void create(List *l) {
int i, len;
printf("请输入要创建的表的长度:");
scanf("%d", &len);
printf("请输入%d个整数:", len);
for (i = 0; i < len; i++) {
scanf("%d", &l->data[i]);
}
l->length = len;
printf("创建成功!\n");
}
void input(List *l) {
int i, len;
printf("请输入要插入的元素个数:");
scanf("%d", &len);
if (l->length + len > MAX_SIZE) {
printf("表已满,无法插入!\n");
return;
}
printf("请输入%d个整数:", len);
for (i = l->length; i < l->length + len; i++) {
scanf("%d", &l->data[i]);
}
l->length += len;
printf("插入成功!\n");
}
void query(List *l) {
int i, x, flag = 0;
printf("请输入要查询的元素:");
scanf("%d", &x);
for (i = 0; i < l->length; i++) {
if (l->data[i] == x) {
printf("%d在表中的位置为%d\n", x, i+1);
flag = 1;
break;
}
}
if (!flag) {
printf("%d不在表中!\n", x);
}
}
void get(List *l) {
int i, x;
printf("请输入要取值的位置:");
scanf("%d", &i);
if (i < 1 || i > l->length) {
printf("位置不合法!\n");
return;
}
x = l->data[i-1];
printf("第%d个元素的值为%d\n", i, x);
}
void insert(List *l) {
int i, x, p;
printf("请输入要插入的位置:");
scanf("%d", &p);
if (p < 1 || p > l->length+1) {
printf("位置不合法!\n");
return;
}
printf("请输入要插入的元素:");
scanf("%d", &x);
for (i = l->length-1; i >= p-1; i--) {
l->data[i+1] = l->data[i];
}
l->data[p-1] = x;
l->length++;
printf("插入成功!\n");
}
void del(List *l) {
int i, p;
printf("请输入要删除的位置:");
scanf("%d", &p);
if (p < 1 || p > l->length) {
printf("位置不合法!\n");
return;
}
for (i = p; i < l->length; i++) {
l->data[i-1] = l->data[i];
}
l->length--;
printf("删除成功!\n");
}
void output(List l) {
int i;
printf("表中元素为:");
for (i = 0; i < l.length; i++) {
printf("%d ", l.data[i]);
}
printf("\n");
}
int main() {
List l;
int choice;
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");
printf("0. 退出程序\n");
printf("请选择:");
scanf("%d", &choice);
switch (choice) {
case 1:
create(&l);
break;
case 2:
input(&l);
break;
case 3:
query(&l);
break;
case 4:
get(&l);
break;
case 5:
insert(&l);
break;
case 6:
del(&l);
break;
case 7:
output(l);
break;
case 0:
exit(0);
default:
printf("输入不合法,请重新输入!\n");
break;
}
}
return 0;
}
```
注意,此程序中的顺序表长度最大为100。如果要增加顺序表的长度,可以将MAX_SIZE改为更大的值。
阅读全文