考研数据结构(每日一题)day11

147 阅读1分钟

考研数据结构(每日一题)

题目:从顺序表中删除具有最小值的元素,(假设唯一)并由函数返回被删元素的值。空出的位置由最后一个元素填补,若顺序表为空则显示出错信息并退出运行。

算法图解:

Snipaste_2022-03-01_09-21-09.png

算法思想:

定义两个变量value和pos,假设线性表中的第一个元素最小,将值放在value,坐标位置放在pos,依次扫描,将剩余元素与这第一个元素进行比较。最后剩余的那个元素就是最小值

完整代码:

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