2.2线性表的顺序表示
1.从顺序表中是删除具有最小值的元素(假设唯一)并由函数返回被删元素的值。空出的位置由最后一个元素填补,若顺序表为空,则显示出错信息并退出运行。
bool Del_Min(SqList &L,ElemType &value){ //bool返回出错信息,value返回其值
if(L.length==0){
return false;
}
value=L.data[0];
int pos=0;
for(int i=1;i
2.设计一个高效算法,将顺序表L的所有元素逆置,要求空间复杂度为O(1)。
void Reverse(SqList &L){
ElemType temp; //辅助变量
for(int i=0;i<=L.length/2;i++){
temp=L.data[i];
L.data[i]=L.data[L.length-1-i];
L.data[L.length-1-i]=temp;
}
3.对长度为n的顺序表L,编写一个时间复杂度为O(n)、空间复杂度为O(1)的算法,该算法删除线性表中所有值为x的数据元素。
//解法1:
void del_x_1(SqList &L,ElemType x){
int k=0; //记录值不等于x的元素个数
for(int 1=0;i