实现顺序表的插入、删除、查看等操作。
操作菜单要求:
- 插入:输入插入的位置和数据,输出插入后的数据;
- 删除:输入要删除的位置,输出删除后的数据;
- 查看:查看当前顺序表的数据;
- 退出。
该实验内容以“int”作为顺序表数据元素的数据类型即可。
顺序表的定义
typedef struct {
ElemType data[MaxSize];
int length;
} SqList; // 顺序表类型
实现的基本运算
插入运算
删除运算
显示运算
初始化运算/建立顺序表
#include <stdio.h>
#include <stdlib.h>
#define MaxSize 100 // 定义最大长度
typedef struct {
int data[MaxSize]; // 存储数据的数组
int length=0; // 当前顺序表的长度
} SqList; // 顺序表类型
// 初始化运算/建立顺序表
void InitList(SqList *L) {
int n, i;
printf("请输入顺序表的初始长度:");
scanf("%d", &n);
printf("请输入顺序表的初始数据(以空格或者回车分隔):\n");
for (i = 0; i < n; i++) {
scanf("%d", &L->data[i]);
}
L->length = n;
}
// 插入运算
void InsertList(SqList *L, int i, int e) {
if (L->length == MaxSize) {
printf("顺序表已满,无法插入!\n");
return;
}
if (i < 1 || i > L->length + 1) {
printf("插入位置不合法!\n");
return;
}
for (int j = L->length; j >= i; j--) {
L->data[j] = L->data[j - 1];
}
L->data[i - 1] = e;
L->length++;
}
// 删除运算
void DeleteList(SqList *L, int i) {
if (L->length == 0) {
printf("顺序表为空,无法删除!\n");
return;
}
if (i < 1 || i > L->length) {
printf("删除位置不合法!\n");
return;
}
for (int j = i; j < L->length; j++) {
L->data[j - 1] = L->data[j];
}
L->length--;
}
// 输出显示
void DisplayList(SqList L) {
if (L.length == 0) {
printf("顺序表为空!\n");
return;
}
for (int i = 1; i <= L.length; i++) {
printf("%d ", L.data[i - 1]);
}
printf("\n");
}
int main() {
SqList L;
int choice,n, i, j, e;
printf("====================================\n");
printf("请选择要执行的操作:\n");
printf("1. 初始化顺序表\n");
printf("2. 插入数据\n");
printf("3. 删除数据\n");
printf("4. 显示顺序表\n");
printf("5. 退出\n");
printf("====================================\n");
scanf("%d", &choice);
while (choice != 5) {
switch (choice) {
case 1:
InitList(&L); // 初始化顺序表
break;
case 2:
printf("请输入要插入的数据个数:");
scanf("%d", &n);
printf("请输入要插入的数据位置:");
scanf("%d", &j);
printf("请依次输入要插入的数据(以空格或者回车分隔):\n");
for (i = 0; i < n; i++) {
scanf("%d", &e);
InsertList(&L, j, e); // 在位置j插入数据e
}
DisplayList(L); // 显示顺序表
break;
case 3:
printf("请输入要删除的位置:");
scanf("%d", &i);
DeleteList(&L, i); // 删除位置i的数据
DisplayList(L); // 显示顺序表
break;
case 4:
DisplayList(L); // 显示顺序表
break;
default:
printf("无效的选择,请重新输入!\n");
break;
}
printf("====================================\n");
printf("请选择要执行的操作:\n");
printf("1. 初始化顺序表\n");
printf("2. 插入数据\n");
printf("3. 删除数据\n");
printf("4. 显示顺序表\n");
printf("5. 退出\n");
printf("====================================\n");
scanf("%d", &choice);
}
return 0;
}