用菜单方式实现:(1)创建一个顺序表;(2)插入一个元素到某位置;(3)根据位置查找元素;(4)根据元素查找位置;(5)输出线性表。用C语言
时间: 2024-09-14 10:07:34 浏览: 56
编写一个完整顺序表的程序
4星 · 用户满意度95%
在C语言中,顺序表通常是通过数组实现的。下面是一个简单的示例,展示了如何使用菜单驱动的方式实现顺序表的基本操作:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100 // 定义顺序表的最大长度
// 定义顺序表结构体
typedef struct {
int data[MAXSIZE]; // 存储顺序表的数组
int length; // 顺序表当前长度
} SeqList;
// 函数声明
void CreateList(SeqList *list);
void InsertElement(SeqList *list, int position, int element);
int FindElement(SeqList list, int element);
void FindPosition(SeqList list, int position);
void OutputList(SeqList list);
int main() {
SeqList list;
int choice, element, position;
while (1) {
printf("\n菜单选项:\n");
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:
CreateList(&list);
break;
case 2:
printf("输入位置和元素:");
scanf("%d %d", &position, &element);
InsertElement(&list, position, element);
break;
case 3:
printf("输入位置:");
scanf("%d", &position);
FindPosition(list, position);
break;
case 4:
printf("输入元素:");
scanf("%d", &element);
position = FindElement(list, element);
if (position != -1) {
printf("元素 %d 在位置:%d\n", element, position);
} else {
printf("元素 %d 不在表中\n", element);
}
break;
case 5:
OutputList(list);
break;
case 6:
printf("程序退出。\n");
return 0;
default:
printf("无效的选项,请重新选择。\n");
}
}
return 0;
}
void CreateList(SeqList *list) {
list->length = 0;
printf("顺序表已创建。\n");
}
void InsertElement(SeqList *list, int position, int element) {
if (position < 1 || position > list->length + 1 || list->length == MAXSIZE) {
printf("插入位置不合法或顺序表已满。\n");
return;
}
for (int i = list->length; i >= position; i--) {
list->data[i] = list->data[i - 1];
}
list->data[position - 1] = element;
list->length++;
printf("元素 %d 已插入位置 %d。\n", element, position);
}
int FindElement(SeqList list, int element) {
for (int i = 0; i < list.length; i++) {
if (list.data[i] == element) {
return i;
}
}
return -1; // 未找到
}
void FindPosition(SeqList list, int position) {
if (position < 1 || position > list.length) {
printf("位置不合法。\n");
return;
}
printf("位置 %d 上的元素是:%d\n", position, list.data[position - 1]);
}
void OutputList(SeqList list) {
if (list.length == 0) {
printf("顺序表为空。\n");
return;
}
printf("顺序表中的元素有:");
for (int i = 0; i < list.length; i++) {
printf("%d ", list.data[i]);
}
printf("\n");
}
```
这个程序提供了一个简单的文本界面,通过输入不同的数字选择对应的操作。主要操作包括:
1. 创建一个空的顺序表。
2. 在指定位置插入一个元素。
3. 根据位置查找对应的元素。
4. 根据元素查找其在顺序表中的位置。
5. 输出顺序表中的所有元素。
阅读全文