用c语言在顺序表L中,将元素x插入到顺序表第i个位置,注意对i值要进行合法性判断。
时间: 2024-01-21 12:18:51 浏览: 34
下面是用C语言实现将元素x插入到顺序表第i个位置的代码:
```c
#include <stdio.h>
#define MAXSIZE 100 // 定义顺序表最大长度
typedef struct {
int data[MAXSIZE]; // 存放顺序表元素
int length; // 存放顺序表长度
} SqList;
// 插入操作
int ListInsert(SqList *L, int i, int x) {
if (i < 1 || i > L->length+1) { // 判断i的合法性
return -1;
}
if (L->length >= MAXSIZE) { // 判断顺序表是否已满
return -1;
}
for (int j = L->length; j >= i; j--) { // 从后往前移动元素
L->data[j] = L->data[j-1];
}
L->data[i-1] = x; // 插入新元素
L->length++; // 长度加1
return 0;
}
int main() {
SqList L = {{1, 3, 5, 7, 9}, 5}; // 初始化顺序表
int i, x;
printf("请输入要插入的位置和元素值(用空格隔开):");
scanf("%d %d", &i, &x);
if (ListInsert(&L, i, x) == -1) { // 插入失败
printf("插入失败!\n");
} else { // 插入成功
printf("插入后的顺序表为:");
for (int j = 0; j < L.length; j++) { // 输出顺序表
printf("%d ", L.data[j]);
}
printf("\n");
}
return 0;
}
```
在这个代码中,我们首先定义了一个 `SqList` 结构体,其中包含一个 `data` 数组和一个 `length` 变量,分别用来存放顺序表的元素和长度。然后,我们实现了一个 `ListInsert` 函数,用于在顺序表中插入一个新元素。该函数首先判断插入位置 `i` 是否合法,如果不合法则返回 `-1` 表示插入失败;然后判断顺序表是否已满,如果已满则返回 `-1` 表示插入失败;接着从后往前移动元素,为新元素腾出位置,最后将新元素插入到顺序表中,并将长度加1。最后,在 `main` 函数中,我们通过用户输入获取要插入的位置和元素值,调用 `ListInsert` 函数进行插入操作,如果插入失败则输出提示信息,否则输出插入后的顺序表。