//从顺序表中删除具有最小值的元素(假设唯一)并由函数返回被删除元素的值。空出的位置由最后一个元素填补,若顺序表为空则显示出错信息并退出运行。
include <stdio.h>
include <stdlib.h>
define MAXSIZE 100
typedef struct
{
int data[MAXSIZE];
int length;
} SqList;
int Del_Min(SqList *L, int *value)
{
if (L->length == 0)
{
printf("err");
}
*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 *value;
}
int main()
{
SqList *L;
int i;
int value;
L = (SqList *)malloc(sizeof(SqList));
printf("请输入表元素个数:");
scanf("%d", &L->length);
printf("请输入元素值:");
for (i = 0; i < L->length; i++)
{
scanf("%d", &L->data[i]);
}
printf("删除前:");
for (i = 0; i < L->length; i++)
{
printf("%d ", L->data[i]);
}
value = Del_Min(L, &value);
printf("最小元素为:%d\n", value);
printf("删除后且最后一个元素填补空出的原最小值元素的位置:");
for (i = 0; i < L->length; i++)
{
printf("%d ", L->data[i]);
}
printf("\n");
return 0;
}