王道数据结构
顺序表综合应用题01
从顺序表中删除具有最小值的元素(假设唯一)并由函数返回被删元素的值。空出的位置由最后一个元素填补,若顺序表为空,则显示出错信息并退出运行。
如果n为0,则表示顺序表为空。
#include<cstdio>
bool Del_Min(int arr[], int& value);
void PrintList(int arr[]);
int n = 10;
int main() {
int arr[10] = {4, 3, 2, 1, 5, 6, 7, 8, 9, 10};
int value = -1;
//n = 0;
PrintList(arr);
bool p = Del_Min(arr, value);
printf("%d\n", value);
PrintList(arr);
}
bool Del_Min(int arr[], int& value) {
if (0 == n) {
return false; //表空,中止操作返回
}
value = arr[0];
int pos = 0; //假定0号元素的值最小
for (int i = 1; i < n; i++) //循环,寻找具有最小值的元素
{
if (arr[i] < value) { //让value记忆当前具有最小值的元素
value = arr[i];
pos = i;
}
}
arr[pos] = arr[n - 1]; //空出的位置由最后一个元素填补
n--;
return true; //此时,value即为最小值
}
void PrintList(int arr[]) {
for (int i = 0; i < n; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
}