2.2 试编写算法,从顺序表中删除具有最小值的元素并由函数返回最小值,空出的位置由最后一个元素填补;若顺序表为空,则显示出错误信息并退出运行。
#include<iostream>
#define MaxSize 100
using namespace std;
struct SqList
{
int a[MaxSize];
int len;
};
int Delete(SqList *p){
if(p->len==0) {
cout<<"error"; return false;
}
int tmp=p->a[0];//找出最小值的元素
for(int i=1;i<p->len;i++){
if (tmp>p->a[i]) tmp=p->a[i];
}
for(int i=0;i<p->len;i++){//空出的元素由最后一个元素填补
if (tmp==p->a[i]) p->a[i]=p->a[p->len-1];
}
return tmp;//返回最小值
}
int main()
{
SqList *L;
L->len=8; //L->len=0;0代表顺序表为空的情况
for(int i=0;i<L->len;i++) L->a[i]=i+1;
int s=Delete(L);
if(s!=false) cout<<s<<endl;//输出最小值元素
for(int i=0;i<L->len-1;i++) cout<<L->a[i]<<" ";//输出新的顺序表
return 0;
}