题目:从顺序表中删除具有最小值的元素(假设唯一)并由函数返回被删元素的值。空出的位置由最后一个元素填补,若顺序表为空,则显示出错误信息并退出运行。
#include <iostream>
#include<stdlib.h>
//#include <limits>
using namespace std;
#define MaxSize 50
// auto inf = std::numeric_limits<double>::infinity();
int inf =999999999;
int tempi=-1;//全局变量 临时索引 用来后面填补
typedef struct{//定义顺序表
int date[MaxSize];
int length;
} SqList;
int delmin(SqList &x){
if(x.length==0)//判断表是否为空
return -1;
int min0= inf;
for(int i=0;i<x.length;i++){//找出最小值与其索引
if(x.date[i]<min0){
min0=x.date[i];
tempi=i;
}
}
x.date[tempi]=x.date[x.length-1];//填补
return min0;
}
int main()
{
SqList S;
// S.date[MaxSize]= {8,2,3,1,5};
int initialValues[] = {8, 2, 3, 1, 5};//以此为例初始化顺序表
for (int i = 0; i < MaxSize; i++) {
S.date[i] = initialValues[i];
}
S.length=5;
int tempmin;
tempmin=delmin(S);
cout<<tempmin<<endl;
// cout<<tempmin<<endl<<tempi<<endl;
// for (int j = 0; j < S.length; j++) {
// cout<<S.date[j]<<endl;
// }
return 0;
}