删除顺序表中的最小值
从顺序表中删除具有最小值的元素(默认唯一)并由函数返回被删元素的值,空出的位置由最后一个元素填补
算法思想:从头至尾遍历顺序表,查找最小值并记录其坐标
缺陷:1.可以直接用value记录最小值,不需要重复设变量min
注意:本题也可以用函数返回值返回,两者的区别是函数返回值只能返回一个值,而引用传参可以返回多个。
/*从顺序表中删除具有最小值的元素(默认唯一)
并由函数返回被删元素的值,空出的位置由最后一个元素填补
算法思想:从头至尾遍历顺序表,查找最小值并记录其坐标
缺陷:1.可以直接用value记录最小值,不需要重复设变量min
注意:本题也可以用函数返回值返回,两者的区别是函数返回值
只能返回一个值,而引用传参可以返回多个。
*/
//删除顺序表中最小值元素
bool Del_Min(SqList &L,int value){
if(L.length==0) return false;//顺序表为空
int min=L.data[0],pos=0;//min记录最小值,pos为最小值下标
for(int i=1;i<L.length;i++){
//循环查找最小值
if(L.data[i]<min) {
min=L.data[i];
pos=i;
}
}
value=min;
L.data[pos]=L.data[i-1];//最后一个元素填补
L.length--;//长度减1
return true;
}
整体实现:
/*顺序表------静态分配实现
1.顺序表的类型定义SqList
2.创销增删改查
InitList(&L):初始化顺序表
DestroyList(&L):销毁顺序表
ListInsert(&L,i,e):按位序插入
ListDelete(&L,i,&e):按位序删除,并用e返回
GetElem(L,i):按位查找
LocateElem(L,e):按值查找
注意事项:
1.在 ListInsert(&L,i,e) 和 ListDelete(&L,i,&e)中i均表示为位序
*/
#include<stdio.h>
#