使用菜单方式实现顺序表的各种操作,包括创建、插入、删除、显示。C语言代码
时间: 2024-10-19 09:09:09 浏览: 19
在C语言中,通过菜单驱动的方式实现顺序表的操作通常会涉及到以下几个步骤。这里我们假设已经有一个简单的顺序表结构体和一些基本操作函数:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义顺序表结构
typedef struct {
int* data;
size_t capacity;
size_t size;
} List;
// 创建空列表
List* create_list() {
List* list = (List*)malloc(sizeof(List));
list->data = NULL;
list->capacity = 0;
list->size = 0;
return list;
}
// 插入元素
void insert(List* list, int value) {
if (list->size == list->capacity) {
list->capacity *= 2; // 如果满了,扩大容量
list->data = realloc(list->data, list->capacity * sizeof(int)); // 重新分配内存
}
list->data[list->size++] = value;
}
// 删除元素
void delete(List* list, int index) {
if (index >= 0 && index < list->size) {
memmove(&list- index - 1));
list->size--;
if (index < list->capacity / 4 && list->size > 0) { // 若删除后的空间大于1/4,则缩小容量
list->capacity /= 2;
list->data = realloc(list->data, list->capacity * sizeof(int));
}
} else {
printf("Index out of range.\n");
}
}
// 显示列表
void display(List* list) {
for (size_t i = 0; i < list->size; i++) {
printf("%d ", list->data[i]);
}
printf("\n");
}
int main() {
List* list = create_list();
while (1) {
printf("Select an operation:\n");
printf("1. Insert\n");
printf("2. Delete\n");
printf("3. Display\n");
printf("4. Exit\n");
int choice;
scanf("%d", &choice);
switch (choice) {
case 1:
int value;
printf("Enter a value to insert: ");
scanf("%d", &value);
insert(list, value);
break;
case 2:
int index;
printf("Enter the index to delete: ");
scanf("%d", &index);
delete(list, index);
break;
case 3:
display(list);
break;
case 4:
free(list->data);
free(list);
exit(0);
break;
default:
printf("Invalid choice.\n");
}
}
return 0;
}
```
在这个例子中,用户通过菜单选择操作,然后输入相应的值进行对应的序列表操作。记得在退出程序时释放内存。
阅读全文