从顺序表中删除具有最小值的元素(假设唯一)并由函数返回值返回被删除元素的值。空出的位置由最后一个元素补齐,若顺序表为空,则显示错误信息并退出运行。
#include<iostream>
#include<stdlib.h>
#define Size 5
using namespace std;
typedef struct Tbale {
int* head;
int length;
int size;
}table;
table InitTable()
{
table t;
t.head = (int*)malloc(Size*sizeof(int));
if (!t.head)
{
printf("创建失败");
return t;
}
t.length = 0;
t.size = Size;
return t;
}
table delTable(table t, int& min)
{
int min1 = INT_MAX;
int num = 0;
for (int i = 0; i < t.length; i++)
{
if (min1 > t.head[i])
{
min1 = t.head[i];
num = i;
}
}
min = min1;
t.head[num ] = t.head[t.length - 1];
t.length--;
return t;
}
void displayTable(table t)
{
for (int i = 0; i < t.length; i++)
printf("%d ", t.head[i]);
printf("\n");
}
int main()
{
table t;
int min=0;
t = InitTable();
for (int i = 0; i < t.size; i++)
{
cin >> t.head[i];
t.length++;
}
displayTable(t);
delTable(t, min);
cout << min<<endl;
displayTable(t);
return 0;
}