第二章-线性表:顺序表的基本操作
二、综合应用题:
01.从顺序表中删除具有最小值的元素(假设唯一)并由函数返回被删元素的值。空出的位置由最后一个元素填补,若顺序表为空,则显示出错信息并退出运行。
#include <iostream>
#include <vector>
using namespace std;
struct SeqList {
vector<int> data;
int length;
};
int deleteMinValue(SeqList& seqList) {
if (seqList.length == 0) {
cerr << "顺序表为空,无法删除元素。" << endl;
exit(EXIT_FAILURE);
}
int minValue = seqList.data[0];
int minIndex = 0;
for (int i = 1; i < seqList.length; ++i) {
if (seqList.data[i] < minValue) {
minValue = seqList.data[i];
minIndex = i;
}
}
seqList.data[minIndex] = seqList.data[seqList.length - 1];
seqList.length--;
return minValue;
}
int main() {
SeqList seqList;
seqList.data = {4, 2, 8, 1, 5};
seqList.length = seqList.data.size();
int deletedValue = deleteMinValue(seqList);
cout << "被删除的最小值元素为: " << deletedValue << endl;
cout << "删除最小值元素后的顺序表为: ";
for (int i = 0; i < seqList.length; ++i) {
cout << seqList.data[i] << " ";
}
return 0;
}