//从顺序表中删除具有最小的元素并由函数返回被删元素的值,空出的位置由最后一个元素填补,若顺序表为空,则显示出错并退出运行
顺便复习一下随机数的生成
#include<iostream>
#include<ctime>//这里为了验证效果,用了随机数生成,(才不是我偷懒)
#define DataType int
#define MAXN 10
using namespace std;
接下来创建个顺序表结构体
struct SeqList{
DataType data[MAXN];
int length;
};
按照题意来讲,有用的就下面的那部分
bool DeleteMinData(struct SeqList *sq,DataType &dt)
{
if (sq->length == 0)
{
cout << "顺序表为空" << endl;
return false;
}
DataType min = sq->data[0];
int pos = 0;
for (int i = 0; i < sq->length; i++)
{
if (sq->data[i] < min)
{
min = sq->data[i];//打不过就加入
pos = i;
}
}
dt = min;
sq->data[pos] = sq->data[sq->length-1];
return true;
}
这里用来生成随机数,初始化顺序表
void GetRandam(struct SeqList* sq)
{
srand((unsigned int)time(NULL));
for (int i = 0; i < sq->length; i++)
{
sq->data[i] = rand() % 21;
}
return;
}
打印函数
void MyPrint(struct SeqList* sq)
{
for (int i = 0; i < sq->length; i++)
{
cout << sq->data[i] << " ";
}
cout << endl;
}
主函数
int main()
{
DataType index;
struct SeqList SeqList1{ {0},10 };
GetRandam(&SeqList1);
MyPrint(&SeqList1);
DeleteMinData(&SeqList1,index);
cout << "被删除的元素为" << index << endl;
MyPrint(&SeqList1);
system("pause");
return 0;
}