用c语言编写功能菜单程序,实现初始化、线性表遍历、插入、删除4个基本操作
时间: 2023-06-01 10:01:57 浏览: 94
以下是一个简单的基于控制台的线性表程序,实现了初始化、遍历、插入和删除操作:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100 // 线性表最大长度
typedef struct {
int data[MAX_SIZE];
int length;
} List;
void init(List *list) {
list->length = 0;
printf("线性表已初始化\n");
}
void traverse(List *list) {
printf("线性表元素:");
for (int i = 0; i < list->length; i++) {
printf("%d ", list->data[i]);
}
printf("\n");
}
void insert(List *list) {
if (list->length == MAX_SIZE) {
printf("线性表已满,无法插入\n");
return;
}
int pos, value;
printf("请输入要插入的位置和值(用空格隔开):");
scanf("%d %d", &pos, &value);
if (pos < 1 || pos > list->length + 1) {
printf("插入位置无效\n");
return;
}
for (int i = list->length; i >= pos; i--) {
list->data[i] = list->data[i - 1];
}
list->data[pos - 1] = value;
list->length++;
printf("插入成功\n");
}
void remove(List *list) {
if (list->length == 0) {
printf("线性表已空,无法删除\n");
return;
}
int pos;
printf("请输入要删除的位置:");
scanf("%d", &pos);
if (pos < 1 || pos > list->length) {
printf("删除位置无效\n");
return;
}
for (int i = pos - 1; i < list->length - 1; i++) {
list->data[i] = list->data[i + 1];
}
list->length--;
printf("删除成功\n");
}
int main() {
List list;
int choice;
init(&list);
while (1) {
printf("请选择操作:\n");
printf("1. 遍历线性表\n");
printf("2. 插入元素\n");
printf("3. 删除元素\n");
printf("4. 退出程序\n");
printf("请输入操作编号:");
scanf("%d", &choice);
switch (choice) {
case 1:
traverse(&list);
break;
case 2:
insert(&list);
break;
case 3:
remove(&list);
break;
case 4:
printf("程序已退出\n");
exit(0);
default:
printf("输入无效\n");
}
}
return 0;
}
```
程序中使用了一个结构体来表示线性表,并定义了四个基本操作的函数。在主函数中,使用一个无限循环来接收用户的操作选择,并调用相应的函数来处理。如果用户输入了无效的操作编号,则会提示输入无效。如果要退出程序,可以选择编号为4的操作。