用C语言编写函数,实现在有序的顺序表中搜索元素x,若x在表中,则返回x在表中的位置。否则,若表未满,则在表中插入新元素x,并且插入后,线性表仍然是有序的,返回新元素x的位置;若表已满,无法插入新元素,则返回-1.编写主函数调用该函数,并
时间: 2023-05-10 10:55:46 浏览: 96
输出结果。
以下是实现该功能的C语言代码:
```
#include <stdio.h>
#define MAX_SIZE 100
int searchInsert(int arr[], int n, int x) {
int i, j;
for (i = 0; i < n; i++) {
if (arr[i] == x) {
return i;
} else if (arr[i] > x) {
for (j = n - 1; j >= i; j--) {
arr[j + 1] = arr[j];
}
arr[i] = x;
return i;
}
}
if (n < MAX_SIZE) {
arr[n] = x;
return n;
} else {
return -1;
}
}
int main() {
int arr[MAX_SIZE] = {1, 3, 5, 7, 9};
int n = 5;
int x = 6;
int pos = searchInsert(arr, n, x);
if (pos == -1) {
printf("Table is full.\n");
} else {
printf("Position of %d is %d.\n", x, pos);
for (int i = 0; i <= n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
return 0;
}
```
运行结果:
```
Position of 6 is 3.
1 3 5 6 7 9
```
解释:
该程序定义了一个有序的顺序表,使用函数 `searchInsert` 实现了在表中搜索元素 x,若 x 在表中,则返回 x 在表中的位置;否则,若表未满,则在表中插入新元素 x,并且插入后,线性表仍然是有序的,返回新元素 x 的位置;若表已满,无法插入新元素,则返回 -1。
在主函数中,我们调用 `searchInsert` 函数,并输出结果。在这个例子中,我们搜索元素 6,由于该元素不在表中,我们将其插入到表中,并返回其位置 3。最后,我们输出了插入后的有序表。
阅读全文