在顺序表第i 个元素前插入一个值为x 的元素的步骤,并输出结果,C语言实现
时间: 2024-03-04 13:29:15 浏览: 85
假设顺序表为数组A,元素个数为n,插入位置为i,插入元素为x。
1. 判断插入的位置是否合法,即i是否在[1,n+1]之间,若不合法则插入失败。
2. 将插入位置及其之后的元素依次向后移动一个位置,即从n到i的位置依次复制到n+1到i+1的位置。
3. 将x赋值给A[i]。
4. 元素个数n加1。
C语言代码实现如下:
```c
#include <stdio.h>
#define MAXSIZE 100 // 假设顺序表最大长度为100
typedef struct {
int data[MAXSIZE];
int length;
} SqList;
// 在第i个位置前插入元素x
int ListInsert(SqList *L, int i, int x)
{
int j;
if (i < 1 || i > L->length + 1) // 判断i是否合法
return 0; // 插入失败
if (L->length == MAXSIZE) // 判断顺序表是否已满
return 0; // 插入失败
for (j = L->length; j >= i; j--) // 将i及其之后的元素依次向后移动一个位置
L->data[j+1] = L->data[j];
L->data[i] = x; // 将x赋值给A[i]
L->length++; // 元素个数加1
return 1; // 插入成功
}
int main()
{
SqList L = {{1, 2, 3, 4, 5}, 5}; // 初始化顺序表
int i, x;
printf("请输入要插入的位置和值:");
scanf("%d%d", &i, &x);
if (ListInsert(&L, i, x))
for (i = 1; i <= L.length; i++)
printf("%d ", L.data[i]);
else
printf("插入失败!\n");
return 0;
}
```
阅读全文