//从顺序表中删除最小值元素(假设唯一),并由函数返回被删除的元素的值,空出的位置由最后一个元素补充,若顺序表为空,则显示出错并退出
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#define MAX 5
typedef struct {
int data[MAX];
int length;
}SqList;
//初始化顺序表
void InitList(SqList &L)
{
for (int i = 0; i < MAX; i++)
{
L.data[i]=0;
}
L.length = 0;
}
//给顺序表中赋值
void PutNum(SqList& L)
{
for (int i = 0; i < MAX; i++)
{
scanf("%d", &L.data[i]);
L.length++;
}
}
//打印顺序表
void PrintList(SqList L)
{
for (int i = 0; i < L.length; i++)
{
printf("%2d", L.data[i]);
}
}
//找出顺序表中的最小值并删除
int SearchMin(SqList& L)
{
if (L.length == 0)
{
printf("顺序表为空,删除失败");
}
int Min = L.data[0];
int pos = 0;
for (int i = 1; i < L.length; i++)
{
if (L.data[i] < Min)
{
Min = L.data[i]; //找出最小值
pos = i;
}
}
L.data[pos] = L.data[L.length - 1]; //将最后一个元素放到最小元素位置
L.length--;
return Min;
}
int main()
{
SqList L;
InitList(L); //初始化
PutNum(L); //赋值
int ret = 0;
ret=SearchMin(L); //查找最小值
printf("删除最小值后的顺序表:");
PrintList(L); //打印顺序表
printf("\n");
printf("删除后顺序表的长度为:%d\n", L.length);
printf("最小值为:%d", ret);
return 0;
}