问题:利用线性表将数组中的最小值转换为数组中最后一个值
分析:从主方法中传入线性表和k值,在listdelete函数中修改线性表中数组的值,这里判断数组的正确性不要忽略了,很简单的一个数组换数字的问题。
结论:相对于直接在主方法中定义数组再进行修改,这样的包装方法更方便,再次用这个方法的时候直接引用函数即可。
#include <iostream>
#include <algorithm>
#include <string.h>
#include <bits/stdc++.h>
char arr[10002];
struct SqList{
int a[Max] = {2,3,4,1,6,7,8,9};
int length = 8;
};
bool listdelete(SqList &s,int &ele){
if(s.length == 0)
return false;
int minn = s.a[0];
int flag = 0;
for(int i = 1;i < s.length;i++){
if(s.a[i] < minn){
minn = s.a[i];
flag = i;
}
}
ele = s.a[flag];
s.a[flag] = s.a[s.length - 1];
return true;
}int main(){
SqList s;
cout<< "原先数组为:"<<endl;
for(int i = 0;i < s.length;i++)
cout<<s.a[i]<<" ";
cout<<endl;
int k = 0;
if(listdelete(s,k)){
cout<<"最小元素k="<<k<<endl;
cout<<"修改后的线性表为:"<<endl;
for(int i = 0;i < s.length;i++){
cout<<s.a[i]<<" ";
}
cout<<endl;
}else {
cout<<"错误"<<endl;
}
return 0;
}