题目描述:
从顺序表中删除具有最小值的元素(假设唯一)并由函数返回被删除元素的值。空出的位置由最后一个元素填补,若顺序表为空,则显示出错信息并退出运行。
算法思想:
搜索整个顺序表,查找到最小的元素并记住它的位置,搜索结束时用最后一个元素填补空出的原最小值元素的位置。
代码如下:
bool Del_min(sqList &L,ElemType &e){
//删除顺序表L中最小值元素的结点,并通过引用型参数e来返回结果
//若删除成功则返回true,否则返回false
if (L.length==0)
return false;//表空,终止操作
e=L.data[0];//假定0号元素值最小
int m=0;
for(int i=1;i<L.length;i++)//循环查找最小值的元素
if(L.data[i]<e){
e=L.data[i];
m=i;
}
L.data[m]=L.data[L.length-1];//空出的位置由最后一个元素补齐
L.length--;
return true; //此时e为最小值
}