Каталог статей
тема
01. Удалить элемент с минимальным значением (считающимся уникальным) из таблицы последовательности и вернуть значение удаленного элемента. Свободная позиция заполняется последним элементом.Если список последовательностей пуст, выводится сообщение об ошибке и операция завершается.
Дополнительные очки знаний
- Характеристика таблицы последовательностей заключается в том, что логическая последовательность совпадает с физической последовательностью.
Анализ идеи
- В заголовке два требования: найти минимальное значение, удалить и вернуть его значение и поместить последний элемент в удаленную позицию.
- Во-первых, чтобы найти минимальное значение , вы можете использовать переменную MINELEM для записи элемента минимального значения в таблицу последовательности. Прокрутите упорядоченный список и сохраните переменную элемента с минимальным значением путем сравнения элементов.
- Во-вторых, для удаления элемента минимального значения и размещения последнего элемента в позиции удаления есть два случая:
- Элемент минимального значения не находится на позиции последнего элемента , поэтому последний элемент необходимо удалить и переместить.
- Элемент минимального значения находится как раз на позиции последнего элемента . На данный момент необходимо удалить только элемент, и нет необходимости перемещать элемент.
- поэтому,Мы можем считать, что после нахождения элемента с минимальным значением сначала замените его последним элементом, затем удалите последний элемент и верните значение последнего элемента.
Код
int LinearList::Question_01()//已将顺序表定为私有成员变量arr
{
int MINELEM = 999999;
int temp = -999999;
for(int i = 0;i < arr.length;i ++){
if(arr.data[i] <= MINELEM){
MINELEM = i;//记录最小值元素下标
}
if(i == arr.length-1){
//交换最小值元素和最后元素
temp = arr.data[MINELEM];
arr.data[MINELEM] = arr.data[i];
}
}
if(temp != -999999)
{
//删除最后元素
arr.length--;
}
return temp;//返回最小值
}