算法思想:搜尋整個順序表,查找最小值元素并記住其位置,搜尋結束後用最後一個元素填補空出的原最小值元素的位置。
本題代碼如下:
bool Del_Min(sqList & L, ElemType & value) {
//删除順序表L中最小值元素結點,并通過引用型參數value傳回其值
//若删除成功,則傳回true;否則傳回false
if (L.length == 0)
return false; //表空,中止操作傳回
value = L.data[0];
int pos = 0; //假定0号元素的值最小
for(int i=1;i<L.length;i++) //循環,尋找具有最小值的元素
if (L.data[i] < value) { //讓value記憶目前具有最小值的元素
value = L.data[i];
pos = i;
}
L.data[pos] = L.data[L.length - 1]; //空出的位置由最後一個元素填補
L.length--;
return true; //此時,value即為最小值
}
注意:本題也可用函數傳回值傳回,兩者的差別是:函數傳回值隻能傳回一個值,而參數傳回(引用傳參)可以傳回多個值。