一道线性表基础题
本题是王道2021数据结构的课后习题。
题目
从顺序表中删除具有最小值的元素(假设唯一)并由函数返回被删元素的值。空出的位置有最后一个元素填补,若顺序表为空则显示出错信息并退出运行。
代码
bool DelMin(sqList &L, ElemType &value){
if(L.length == 0) return false;
value = L.data[0];
int pos = 0;
for(int i = 0; i < L.length; i++){
if(L.data[i] < value){
value = L.data[i];
pos = i;
}
}
L.data[pos] = L.data[L.length - 1];
L.length--;
return true;
}
反思
最开始做题时没有认真读题,没有注意到"空出的位置有最后一个元素填补",所以考虑的是删除以后如何将后面的元素前移,这句话也可以算作是本题的一个提示,简化了算法。