1.编程实现从顺序表中删除具有最小值的元素(假设唯一),并由函数返回被删除元素的值。空出的位置由最后一个元素填补。用c语言
时间: 2024-09-18 16:16:54 浏览: 46
在C语言中,我们可以使用数组作为顺序列表来实现这个功能。这里是一个简单的示例,函数`delete_min()`会找到并删除最小值,并返回它:
```c
#include <stdio.h>
// 定义一个函数,用于删除顺序列表中的最小元素并返回其值
int delete_min(int arr[], int size) {
// 检查数组是否为空
if (size == 0) {
printf("数组为空,无法删除元素。\n");
return -1; // 返回-1表示错误
}
// 如果只有一个元素,直接返回并将数组结束标记
if (size == 1) {
arr[0] = INT_MAX; // 设置最大值避免误删
return arr[0]; // 返回最大值
}
// 初始化最小值为第一个元素
int min_val = arr[0];
int min_index = 0;
// 遍历查找最小值
for (int i = 1; i < size; i++) {
if (arr[i] < min_val) {
min_val = arr[i];
min_index = i;
}
}
// 删除最小元素
int last_val = arr[size - 1]; // 存储最后一个元素
arr[min_index] = last_val; // 将最后一个元素移到原最小元素位置
// 返回删除的最小值
return min_val;
}
int main() {
int arr[] = {5, 3, 8, 1, 6};
int size = sizeof(arr) / sizeof(arr[0]);
int deleted_val = delete_min(arr, size);
if (deleted_val != -1) {
printf("删除的最小元素值: %d\n", deleted_val);
} else {
printf("删除操作失败,数组为空或只有一项。\n");
}
// 打印处理后的数组
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
在这个程序中,`delete_min()`函数首先检查数组是否为空,然后遍历数组找到最小值。当找到最小值后,将最后一个元素替换到该位置,最后返回最小值。注意,当数组只剩下一个元素时,我们将其设置为极大值防止误删。
阅读全文