c语言非递减有序顺序表输入元素,再插入元素使代码仍递增
时间: 2023-05-30 16:05:42 浏览: 100
已知单链表L为按值递增有序的,编写算法将数据元素e插入到顺序表L中,使之仍有序
5星 · 资源好评率100%
以下是一个示例代码:
```c
#include <stdio.h>
#define MAX_SIZE 100
void insert(int arr[], int *size, int value);
int main() {
int arr[MAX_SIZE];
int size = 0;
int value;
// 输入元素
printf("请输入非递减有序顺序表:\n");
while (size < MAX_SIZE) {
if (scanf("%d", &arr[size]) != 1) {
break;
}
size++;
}
// 插入元素并保持递增
printf("请输入要插入的元素:\n");
if (scanf("%d", &value) == 1) {
insert(arr, &size, value);
}
// 输出有序顺序表
printf("有序顺序表为:\n");
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
void insert(int arr[], int *size, int value) {
int i;
for (i = *size - 1; i >= 0 && arr[i] > value; i--) {
arr[i + 1] = arr[i];
}
arr[i + 1] = value;
(*size)++;
}
```
首先,我们定义了一个 `insert` 函数,该函数接受一个有序顺序表 `arr`、该有序顺序表的大小 `size` 和要插入的值 `value`。函数通过将元素依次向右移动直到找到要插入的位置,最后将 `value` 插入到该位置来实现在有序顺序表中插入元素并保持递增。
在 `main` 函数中,我们首先输入一个非递减有序顺序表,然后输入要插入的值,并调用 `insert` 函数来将该值插入到有序顺序表中。最后,我们输出有序顺序表。
需要注意的是,在输入有序顺序表时,我们使用了一个循环来读取输入值,并在输入错误或达到最大容量时退出循环。在输入要插入的值时,我们只读取一个值,因为我们只需要一个值来插入到有序顺序表中。
阅读全文