Удаление первого элемента списка - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Ребят помогите,пожалуйста. Суть в том,что нужно составить список(записную книжку) с фамилиями номером и датой рождения, затем нужно определить средний возраст всех людей из списка и удалить тех кто младше среднего возраста и отсортировать уже этот список по алфавит. Удаление работает, но вот если удаляемый элемент стоит первым в списке, то он удаляет только его фамилию, надеюсь поможете мне разобраться в этом.

Решение задачи: «Удаление первого элемента списка»

textual
Листинг программы
procedure DelItem(var p: List; e: List);
var t: List; q: ^List;
begin
  q:=@p;
  while (q^<>nil) and (q^<>e) do q:=@q^.Next;
  if q^=nil then Exit;
  t:=q^; q^:=q^.Next; Dispose(t);
end;

Объяснение кода листинга программы

  1. В процедуре DelItem объявляются две переменные: p и e. Переменная p представляет список, из которого нужно удалить элемент, а переменная e - это сам элемент, который нужно удалить.
  2. Создается переменная t типа List, которая будет использоваться для временного хранения элемента, который нужно удалить.
  3. Создается переменная q типа ^List, которая будет использоваться для указания на текущий элемент в списке p. Переменная q инициализируется адресом первого элемента списка p.
  4. В цикле while проверяется, что q не равно nil и q не равно e. Если оба условия выполняются, то q обновляется на следующий элемент в списке, а затем цикл повторяется. Это позволяет переместить элемент, который будет удален, в конец списка.
  5. Если после выполнения цикла q равно nil, значит в списке нет элементов, которые нужно удалить. В этом случае процедура завершается.
  6. После выхода из цикла, переменная t инициализируется значением q. Это означает, что элемент, который был удален, был сохранен в переменной t и может быть безопасно уничтожен с помощью Dispose.
  7. Переменная q обновляется на следующий элемент в списке, чтобы можно было продолжить работу со следующим элементом.

Оцени полезность:

5   голосов , оценка 3.8 из 5
Похожие ответы