使用C语言编写代码,从顺序表中依次删除具有最小值的元素并由函数返回最小值,空出的位置由最后一个元素填补,若顺序表为空,则显示出错信息并退出运行
时间: 2024-06-10 19:08:34 浏览: 103
从有序顺序表中删除其值在给定值s与t之间(要求s小于t)的所有元素,如果s或t不合理或顺序表为空,则显示出错信息并退出运行
可以使用以下代码来实现从顺序表中删除具有最小值的元素并返回最小值的功能:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 50
typedef struct {
int data[MAX_SIZE];
int length;
} SeqList;
int deleteMin(SeqList *list) {
if (list->length == 0) {
printf("顺序表为空,无法删除元素!\n");
exit(1);
}
int min = list->data[0];
int minIndex = 0;
for (int i = 1; i < list->length; i++) {
if (list->data[i] < min) {
min = list->data[i];
minIndex = i;
}
}
list->data[minIndex] = list->data[list->length - 1];
list->length--;
return min;
}
int main() {
SeqList list = {{23, 56, 12, 34, 9}, 5};
int min = deleteMin(&list);
printf("删除的最小值为:%d\n", min);
for (int i = 0; i < list.length; i++) {
printf("%d ", list.data[i]);
}
printf("\n");
return 0;
}
```
阅读全文