用C语言写出完整可执行代码: 设顺序表L有100个元素,请编写算法,实现以下的功能。 (1)在第51号位置上插入一个新元素x。 (2)删除第25号位置上的元素。
时间: 2024-09-14 22:10:13 浏览: 41
以下是使用C语言编写的一个简单的顺序表操作程序,其中包含了在指定位置插入元素和删除指定位置元素的功能。
```c
#include <stdio.h>
#define MAXSIZE 100 // 定义顺序表的最大长度
// 顺序表的结构体定义
typedef struct {
int data[MAXSIZE]; // 存储顺序表元素的数组
int length; // 顺序表当前长度
} SeqList;
// 在第pos号位置插入元素x
int Insert(SeqList *L, int pos, int x) {
if (pos < 1 || pos > L->length + 1 || L->length == MAXSIZE) {
// 插入位置不合法或顺序表已满
return -1;
}
for (int i = L->length; i >= pos; i--) {
// 将第pos号位置及之后的元素后移一位
L->data[i] = L->data[i - 1];
}
L->data[pos - 1] = x; // 在指定位置放入新元素
L->length++; // 顺序表长度增加
return 0;
}
// 删除第pos号位置的元素
int Delete(SeqList *L, int pos) {
if (pos < 1 || pos > L->length) {
// 删除位置不合法
return -1;
}
for (int i = pos; i < L->length; i++) {
// 将第pos号位置之后的元素前移一位
L->data[i - 1] = L->data[i];
}
L->length--; // 顺序表长度减少
return 0;
}
// 打印顺序表
void PrintList(SeqList L) {
for (int i = 0; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
}
int main() {
SeqList L; // 声明顺序表
L.length = 0; // 初始化顺序表长度为0
// 假设顺序表初始化后已经填充了100个元素(此处省略具体填充过程)
// ...
// 在第51号位置上插入一个新元素x(这里假设x为99)
if (Insert(&L, 51, 99) == 0) {
printf("插入成功。\n");
} else {
printf("插入失败。\n");
}
// 删除第25号位置上的元素
if (Delete(&L, 25) == 0) {
printf("删除成功。\n");
} else {
printf("删除失败。\n");
}
// 打印操作后的顺序表
PrintList(L);
return 0;
}
```
这段代码首先定义了一个顺序表的结构体,包含一个数组用于存储顺序表的元素,以及一个整数用于记录顺序表的当前长度。然后实现了插入和删除操作的函数,并在主函数中调用这些函数来完成指定的操作。注意,实际使用时,顺序表的初始化和填充过程需要根据具体情况编写。此外,顺序表的位置编号是从1开始的。
阅读全文