实现线性表的插入、删除、求表长、查找给定值e、查找第i个位置元素 等基本操作,要求编写的程序以菜单方式工作
时间: 2024-10-28 08:10:25 浏览: 30
实验一 线性表的基本操作实现及其应用.pdf
要实现一个简单的命令行菜单驱动的线性表(如数组或链表)操作程序,我们可以使用以下步骤:
1. 定义数据结构:首先创建一个表示线性表的数据结构,可以是数组或链表,这里假设用数组举例。
```c
typedef struct {
int data[100]; // 假设数组大小为100
int size;
} LinearList;
```
2. 初始化和操作函数:
- `init_list()`:初始化线性表。
- `insert()`:在指定位置插入元素。
- `delete()`:删除指定位置的元素。
- `get_length()`:返回线性表长度。
- `search()`:查找给定值e。
- `find_element_at_index(i)`:查找第i个位置的元素。
```c
void init_list(LinearList* list) {
list->size = 0;
}
// 插入元素
void insert(LinearList* list, int index, int value) {
if (index < 0 || index > list->size) {
printf("Invalid index.\n");
return;
}
list->data[index] = value;
list->size++;
}
// 删除元素
void delete(LinearList* list, int index) {
if (index < 0 || index >= list->size) {
printf("Invalid index.\n");
return;
}
for (int i = index; i < list->size - 1; i++) {
list->data[i] = list->data[i + 1];
}
list->size--;
}
// 计算并返回线性表长度
int get_length(const LinearList* list) {
return list->size;
}
// 查找元素
int search(const LinearList* list, int e) {
for (int i = 0; i < list->size; i++) {
if (list->data[i] == e) {
return i;
}
}
return -1; // 如果未找到,则返回-1
}
// 查找指定索引的元素
int find_element_at_index(const LinearList* list, int i) {
if (i < 0 || i >= list->size) {
printf("Invalid index.\n");
return -1;
}
return list->data[i];
}
```
3. 主菜单循环:
- 用户选择菜单项,调用相应的函数。
```c
int main() {
LinearList list;
while (true) {
int choice;
printf("\nLinear List Operations:\n");
printf("1. Insert\n");
printf("2. Delete\n");
printf("3. Get length\n");
printf("4. Search\n");
printf("5. Find element at index\n");
printf("6. Exit\n");
scanf("%d", &choice);
switch (choice) {
case 1:
int index, value;
printf("Enter index and value: ");
scanf("%d %d", &index, &value);
insert(&list, index, value);
break;
// 其他case处理同理
case 6:
exit(0); // 退出程序
break;
default:
printf("Invalid choice.\n");
}
}
return 0;
}
```
现在你已经有了一个基本的线性表操作程序,用户可以通过菜单选项执行各种操作。
阅读全文