【问题描述】 设顺序表中的数据元素递增有序。试写一算法,将 x 插入到顺序表的适当位置上,以保证该表的有序 性。 The elements in the table are incrementally ordered. Try to write an algorithm to insert x into the proper position of the table to ensure the order of the table. 【输入形式】 每组数据有三行,第一行数组为数组长度,第二行为各数组元素(数组元素为整数,且元素间要有空 格),第三行为插入的元素。 【输出形式】 显示出插入元素后的顺序表。
时间: 2023-04-05 10:01:22 浏览: 134
关于数据结构的程序
算法如下:
1. 读入数组长度 n,数组元素 a[1]~a[n],插入元素 x。
2. 从数组末尾开始向前扫描,找到第一个比 x 小的元素 a[i]。
3. 将 a[i+1]~a[n] 向后移动一个位置,空出 a[i+1] 的位置。
4. 将 x 插入到 a[i+1] 的位置。
5. 输出插入元素后的顺序表。
具体实现代码如下:
#include <stdio.h>
int main()
{
int n, a[100], x, i;
// 读入数组长度、数组元素、插入元素
scanf("%d", &n);
for (i = 1; i <= n; i++) {
scanf("%d", &a[i]);
}
scanf("%d", &x);
// 从数组末尾开始向前扫描,找到第一个比 x 小的元素
for (i = n; i >= 1 && a[i] > x; i--) {
a[i+1] = a[i];
}
// 将 x 插入到 a[i+1] 的位置
a[i+1] = x;
// 输出插入元素后的顺序表
for (i = 1; i <= n+1; i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
阅读全文