【实验要求】 从键盘读入一组整数,按输入顺序形成顺序表。并将创建好的顺序表元素依次打印在屏幕上。 设计一个带选择菜单的主函数,菜单中具备任意选择删除、插入、查找数据元素的功能。 当选择删除功能时,从键盘读入欲删除的元素位置或元素值,按指定方式删除;当选择插入功能时,从键盘读入新元素值和被插入位置,在指定位置插入;当选择查找功能时,从键盘读入欲查找的元素值,返回其位置序号。 每种操作结束后,都能在屏幕上打印出此时顺序表元素的遍历结果。
时间: 2023-05-19 13:05:06 浏览: 89
好的,以下是我的回答:
这是一个典型的顺序表操作问题,我们可以使用 C 语言中的数组来实现。首先,我们需要从键盘读入一组整数,并将它们存储在数组中。代码如下:
```c
#include <stdio.h>
#define MAX_SIZE 100
int main() {
int arr[MAX_SIZE];
int n, i;
printf("请输入整数的个数:");
scanf("%d", &n);
printf("请输入%d个整数:", n);
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
printf("顺序表元素为:");
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
接下来,我们需要设计一个带选择菜单的主函数,菜单中具备任意选择删除、插入、查找数据元素的功能。当选择删除功能时,从键盘读入欲删除的元素位置或元素值,按指定方式删除;当选择插入功能时,从键盘读入新元素值和被插入位置,在指定位置插入;当选择查找功能时,从键盘读入欲查找的元素值,返回其位置序号。每种操作结束后,都能在屏幕上打印出此时顺序表元素的遍历结果。
代码如下:
```c
#include <stdio.h>
#define MAX_SIZE 100
void print_arr(int arr[], int n) {
int i;
printf("顺序表元素为:");
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
void delete_element(int arr[], int *n) {
int i, pos, val;
printf("请输入要删除的元素位置或元素值:");
scanf("%d", &pos);
if (pos < 1 || pos > *n) {
printf("位置不合法!\n");
return;
}
for (i = pos - 1; i < *n - 1; i++) {
arr[i] = arr[i + 1];
}
(*n)--;
print_arr(arr, *n);
}
void insert_element(int arr[], int *n) {
int i, pos, val;
printf("请输入要插入的元素值和位置:");
scanf("%d %d", &val, &pos);
if (pos < 1 || pos > *n + 1) {
printf("位置不合法!\n");
return;
}
for (i = *n; i >= pos; i--) {
arr[i] = arr[i - 1];
}
arr[pos - 1] = val;
(*n)++;
print_arr(arr, *n);
}
void search_element(int arr[], int n) {
int i, val;
printf("请输入要查找的元素值:");
scanf("%d", &val);
for (i = 0; i < n; i++) {
if (arr[i] == val) {
printf("元素%d的位置为%d\n", val, i + 1);
return;
}
}
printf("元素%d不存在!\n", val);
}
int main() {
int arr[MAX_SIZE];
int n, i, choice;
printf("请输入整数的个数:");
scanf("%d", &n);
printf("请输入%d个整数:", n);
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
while (1) {
printf("请选择操作:\n");
printf("1. 删除元素\n");
printf("2. 插入元素\n");
printf("3. 查找元素\n");
printf("4. 退出程序\n");
printf("请输入操作编号:");
scanf("%d", &choice);
switch (choice) {
case 1:
delete_element(arr, &n);
break;
case 2:
insert_element(arr, &n);
break;
case 3:
search_element(arr, n);
break;
case 4:
return 0;
default:
printf("操作编号不合法!\n");
break;
}
}
return 0;
}
```
以上就是我的回答,希望能对你有所帮助!
阅读全文