#include <stdio.h> // 线性表插入、删除、按值查找
#define MAX_SIZE 10 // 定义线性表的最大长度
// 线性表结构体
typedef struct {
int data[MAX_SIZE]; // 存储线性表元素的数组
int last; // 线性表的当前长度
} List;
void intlist(List *L) {
L->last = 0; // 初始化线性表的长度为0
}
void Create(List *L) {
int i;
if (L->last >= MAX_SIZE - 1) { // 注意这里的条件
printf("线性表已满\n");
} else {
printf("请输入线性表数据个数(最多 %d 个):\n", MAX_SIZE - 1);
scanf("%d", &L->last);
// 检查输入的个数是否超出最大限制
if (L->last < 0 || L->last >= MAX_SIZE) {
printf("输入的个数不合法,必须在 0 到 %d 之间。\n", MAX_SIZE - 1);
L->last = 0; // 重置长度
return;
}
printf("请输入数据:\n");
for (i = 1; i < L->last+1; i++) { // 从 0 开始,读取 `last` 个数据
scanf("%d", &L->data[i-1]);
}
}
}
void insert(List *L) {
if (L->last >= MAX_SIZE - 1) { // 注意这里的条件
printf("线性表已满, 不能插入数据\n");
} else {
int position, x, j;
printf("请输入所要插入的位置 (1 到 %d):\n", L->last + 2);
scanf("%d", &position);
// 检查插入位置是否合法
if (position < 1 || position > L->last + 2) {
printf("无效的位置\n");
} else {
printf("请输入所要插入的数据:\n");
scanf("%d", &x);
// 移动元素以空出插入位置
for (j = L->last; j >= position - 1; j--) {
L->data[j + 1] = L->data[j];
}
L->data[position - 1] = x; // 插入新数据
L->last++; // 更新线性表长度
}
}
}
int main() {
List myList;
intlist(&myList); // 初始化线性表
Create(&myList); // 创建线性表
insert(&myList); // 插入元素
// 输出线性表以确认插入
printf("线性表的元素为:\n");
for (int i = 0; i < myList.last; i++) {
printf("%d ", myList.data[i]);
}
printf("\n");
return 0;
}

被折叠的 条评论
为什么被折叠?



