从顺序表中删除具有最小值的元素(假设唯一)并由函数返回被删除元素的值。空出的位置由最后一个元素填补,若顺序表为空,则显示出错误信息并退出。
#include <stdio.h>
#include <stdlib.h>
#define MaxSize 8
typedef struct{
int data[MaxSize];
int length;
}SqList;
void InitList(SqList &L){
L.length=0;
}
bool SelectMinToDelete(SqList &L){
int pos=0;
if(L.length == 0){
return false;
}
int MinNum=L.data[0];
for(int i=1; i<L.length; i++){
if(L.data[i]<MinNum){
pos = i;
MinNum=L.data[i];
}
}
L.data[pos]=L.data[L.length-1];
L.length--;
printf("删除的元素是%d\n",MinNum);
}
int main(){
SqList L;
InitList(L);
int number;
for(int i=0;i<MaxSize;i++){
scanf("%d",&number);
L.data[i]=number;
L.length++;
}
for(int i=0;i<L.length;i++){
printf("data[%d]=%d\n",i,L.data[i]);
}
SelectMinToDelete(L);
printf("删除后的表为:\n");
for(int i=0;i<L.length;i++){
printf("data[%d]=%d\n",i,L.data[i]);
}
}