题目:
从顺序表中删除具有最小值的元素(假设唯一)并由函数返回被删元素的值。空出的位置由最后一个元素填补,若顺序表为空,则显示出错信息并退出运行。
思路:
搜索整个顺序表,查找最小值元素并记住其位置,搜索结束后用最后一个元素填补空出的原最小值元素的位置。
代码:
#include <stdio.h>
#define MaxSize 100
typedef struct{
int data[MaxSize];
int length;
}SqList;
bool Del_Min(SqList &L, int &value) //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-1];
L.length--;
return true;
}
int main()
{
int n,e;
SqList list;
printf("请输入线性表元素个数:\n");
scanf("%d",&n);
list.length=n;
printf("请输入线性表元素:\n");
for(int i=0;i<n;i++)
scanf("%d",&list.data[i]);
if(Del_Min(list,e))
printf("被删元素值为%d",e);
}