使用C语言编写代码,从顺序表中依次删除具有最小值的元素并由函数返回最小值,空出的位置由最后一个元素填补,若顺序表为空,则显示出错信息并退出运行
时间: 2024-06-10 13:08:34 浏览: 249
首先,我们可以使用以下的代码来实现这个功能:
```c
#include <stdio.h>
int deleteMin(int arr[], int size) {
if (size == 0) {
printf("顺序表为空,无法删除最小值\n");
return -1;
}
int min = arr[0];
int minIndex = 0;
for (int i = 1; i < size; i++) {
if (arr[i] < min) {
min = arr[i];
minIndex = i;
}
}
arr[minIndex] = arr[size - 1];
return min;
}
int main() {
int arr[] = {5, 2, 8, 3, 1};
int size = sizeof(arr) / sizeof(arr[0]);
int minValue = deleteMin(arr, size);
if (minValue != -1) {
printf("删除的最小值是:%d\n", minValue);
printf("删除最小值后的顺序表:");
for (int i = 0; i < size - 1; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
return 0;
}
```
这段代码中,我们先判断顺序表是否为空,如果为空则输出错误信息并返回 -1。否则,我们通过遍历顺序表找到最小值及其索引,然后将最后一个元素填补到最小值的位置上。最后,我们返回最小值并打印删除最小值后的顺序表。
阅读全文