数据结构(王道)【线性表】【算法1.1-1.2】

来源:互联网 发布:淘宝上的电话卡可信吗 编辑:程序博客网 时间:2024/06/11 21:55

题目和答案来自数据结构(王道)线性表

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

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;    }    }

注意:本题也可以利用函数值返回,两者的区别是:函数值返回只能返回一个值,而参数返回(引用传参)则可以返回多个值。

2.设计一个高效的算法,将顺序表的所有元素逆置,要求算法的空间复杂度为O(1)。

// 算法思想:扫描顺序表L的前半部分元素,对于元素L.datai,将其余半部分对应元素L.data[L.length-i-1]进行交换。

void Reverse(Sqlist &L) {    ElemType temp;    for (i = 0; i < L.length / 2; i++) {        temp = L.data[i];  // 交换L.data[i]与L.data[length-i-1]        L.data[i] = L.data[L.length - i - 1];        L.data[L.length - i - 1] = temp;    }}
0 0
原创粉丝点击