天天看點

從順序表中删除具有最小值的元素(假設唯一)并由函數傳回被删元素的值。空出的位置由最後一個元素填補,若順序表為空,則顯示出錯資訊并退出運作。

算法思想:搜尋整個順序表,查找最小值元素并記住其位置,搜尋結束後用最後一個元素填補空出的原最小值元素的位置。

本題代碼如下:

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即為最小值
}
           

 注意:本題也可用函數傳回值傳回,兩者的差別是:函數傳回值隻能傳回一個值,而參數傳回(引用傳參)可以傳回多個值。

繼續閱讀