从顺序表中在第i个位置插入一个元素x,然后输出顺序表中所有的元素。再删除顺序表中第k个元素,然后输出顺序表中所有的元素。 用C语言写
时间: 2024-05-27 15:11:52 浏览: 99
#include <stdio.h>
#define MAXSIZE 100 // 定义顺序表的最大长度
typedef struct {
int data[MAXSIZE]; // 存储元素的数组
int length; // 当前表长
} SqList;
// 在顺序表的第i个位置插入元素x
int ListInsert(SqList *L, int i, int x) {
if (i < 1 || i > L->length + 1 || L->length == MAXSIZE) {
return 0; // 插入失败
}
for (int j = L->length; j >= i; j--) {
L->data[j] = L->data[j - 1]; // 将i位置后的所有元素向后移动一位
}
L->data[i - 1] = x; // 将x插入到i位置
L->length++; // 表长加1
return 1; // 插入成功
}
// 删除顺序表的第k个元素
int ListDelete(SqList *L, int k) {
if (k < 1 || k > L->length) {
return 0; // 删除失败
}
for (int i = k; i < L->length; i++) {
L->data[i - 1] = L->data[i]; // 将k位置后的所有元素向前移动一位
}
L->length--; // 表长减1
return 1; // 删除成功
}
int main() {
SqList L = {{1, 2, 3, 4, 5}, 5}; // 初始化顺序表
int i = 3, x = 6, k = 4; // 分别为插入位置、插入元素、删除位置
printf("插入前:");
for (int j = 0; j < L.length; j++) {
printf("%d ", L.data[j]);
}
printf("\n");
ListInsert(&L, i, x); // 在第i个位置插入元素x
printf("插入后:");
for (int j = 0; j < L.length; j++) {
printf("%d ", L.data[j]);
}
printf("\n");
ListDelete(&L, k); // 删除第k个元素
printf("删除后:");
for (int j = 0; j < L.length; j++) {
printf("%d ", L.data[j]);
}
printf("\n");
return 0;
}
阅读全文