Динамические списки. Программа, которая должна вставлять в непустой список L новый элемент перед последним - Pascal ABC
Формулировка задачи:
Добрый вечер, имеется программа, которая должна вставлять в непустой список L новый элемент перед последним. Вместо этого просто создается новый список. Будьте любезны, помогите исправить:
Решение задачи: «Динамические списки. Программа, которая должна вставлять в непустой список L новый элемент перед последним»
textual
Листинг программы
procedure AddBeforeLast(var L : uk; znach:tinf); var q, t : uk; first : boolean; begin new(t); t^.x := znach; q := L; first := true; while (q^.adr <> nil) and (q^.adr^.adr <> nil) do begin q := q^.adr; first := false; end; t^.adr := q^.adr; q^.adr := t; if first then L := q; end; // ... Begin SOZD_SPIS; VIVOD('исходн'); AddBeforeLast(first, 1); // Вызываешь именно функцию "Добавить перед последним" VIVOD('после вставки'); readkey; End.
Объяснение кода листинга программы
- Создается новый элемент
t
, который будет хранить значениеznach
. - Переменная
q
инициализируется ссылкой на первый элемент спискаL
. Переменнаяfirst
устанавливается вtrue
, чтобы отслеживать, является лиq
первым элементом. - Запускается цикл, который продолжается до тех пор, пока
q
не указывает наnil
, что означает конец списка. - Внутри цикла переменная
q
обновляется, чтобы указывать на следующий элемент в списке. Переменнаяfirst
устанавливается вfalse
, чтобы отслеживать, является ли текущий элемент последним. - Когда
q
указывает наnil
, это означает, что мы достигли конца списка. В этом случаеt
становится последним элементом спискаL
. - Конец функции.
- Вызывается функция
AddBeforeLast
с аргументамиfirst
и1
. Это добавляет элемент перед последним элементом спискаL
. - Выводится сообщение
после вставки
. - Вызывается функция
readkey
, чтобы прочитать ввод пользователя.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д