第二章:顺序表P19
1.从顺序表中删除具有最小值的元素(假设唯一)并由函数返回被删元素的值。空出的位置由最后一个元素填补,若顺序表为空则显示出错信息并退出运行。
#include<iostream>
using namespace std;
#define MaxSize 100
#define N 11
typedef struct{
int *data;
int length;
}SqList;
//初始化
void initlist(SqList &L) //用引用
{
int nums[N]={11,13,2,1,4,5,6,7,8,9,10};
L.data = new int[MaxSize]; //后面要delete
for(int i=0;i<N;i++)
{
L.data[i]=nums[i];
}
L.length=N-1;
}
//取最小位置
int miniElem(SqList L){
int i=0;
for(int j=1;j<L.length;j++){
if(L.data[j]<L.data[i])
i=j;
}
return i;
}
//删除,并用最后一个元素补上
int Deletelistmini(SqList &L,int m){
int e=L.data[m];
L.data[m]=L.data[L.length];
L.length--;
cout<<"mini:"<<e<<endl;
return e;
}
//打印输出
void Print_Sq(SqList &L)
{
for(int i=0;i<=L.length;i++)
{
cout<<L.data[i]<<" ";
}
cout<<endl;
}
int main()
{
SqList L;
initlist(L);
Print_Sq(L);
int m=miniElem(L);
Deletelistmini(L,m);
Print_Sq(L);
return 0;
}
#include<iostream>
using namespace std;
#define MaxSize 100
#define N 11
typedef struct{
int *data;
int length;
}SqList;
//初始化
void initlist(SqList &L) //用引用
{
int nums[N]={11,13,2,16,4,5,6,7,8,9,10};
L.data = new int[MaxSize]; //后面要delete
for(int i=0;i<N;i++)
{
L.data[i]=nums[i];
}
L.length=N-1;
}
bool Del_Min(SqList &L,int &value){
if(L.length==0)
return false;
value=L.data[0];
int pos=0;
for(int i=1;i<=L.length;i++)
if(L.data[i]<value){
value=L.data[i];
pos=i;
}
L.data[pos]=L.data[L.length];
L.length--;
return true;
}
//打印输出
void Print_Sq(SqList &L)
{
for(int i=0;i<=L.length;i++)
{
cout<<L.data[i]<<" ";
}
cout<<endl;
}
int main()
{
SqList L;
initlist(L);
Print_Sq(L);
int value=0;
Del_Min(L,value);
Print_Sq(L);
return 0;
}