本文主要是介绍删除顺序表中最小的值,并将最后一位填补空位,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
从顺序表中删除具有最小值的元素(假设唯一)并由函数返回被删除的元素的值。空出的位置由最后一个元素填补;若顺序表为空,则显示出错误信息并退回运行。
思想:将第一个元素假设为最小元素,然后遍历整个顺序表,如果出现小于第一个元素的值,将所出现的值作为最小值,以此类推,直到顺序表遍历结束。找到最小的一个元素后,将最后一个元素放到最小元素位置,并将顺序表长度减一。
针对该题,我们可以先找到最小元素。从非空顺序表中找到最小元素,并将其最小值和下标返回。
具体代码如下:
bool Find_min(SqList &L,ElemType &value){value=L.data[0];int pos=0;for(int i=1;i<=L.length;i++){if(L.data[i] < value){value=L.data[i]pos=i;}}
}
通过找到最下元素,可扩展到删除顺序表中最小的值,并将最后一位填补空位。
具体代码如下:
bool Delte_min(SqList &L,EleType &value){if(L.length==0){return false;}value=L.data[0];int pos=0;for(int i=1;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;
}
时间复杂度O(n);空间复杂度O(1)
这篇关于删除顺序表中最小的值,并将最后一位填补空位的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!