题目:从顺序表中删除具有最小值的元素(假设唯一)并由函数返回被删元素的值。空出的位置由最后一个元素填补。若顺序表为空显示出错信息并退出运行。
算法思想:搜索整个顺序表,查找最小值元素并记住其位置,搜索结束后用最后一个元素填补空出的原最小值元素位置。
实现该功能的代码:
int ListDeletMin_Sq(LIST *list)
{
if (list->length == 0)
return false;
int index = 0;
int pos = 0;
int min = list->base[index];
for (index = 1; index < list->length; index++)
{
if (min > list->base[index])
{
min = list->base[index];
pos = index;
}
}
list->base[pos] = list->base[list->length - 1];
return min;
}