Удалить элемент из списка - Turbo Pascal
Формулировка задачи:
Подскажите способ удаления элемента из центра списка.
Допусти дан однонарпвленный список, и надо удалить все элементы равные 5. Эти элементы находятся в середине .
P.S Я знаю, что на форуме есть закрепленный топик с этим добром, но там не понятно =(
Я вот таким образом пытаюсь удалить, но не получается=(
Решение задачи: «Удалить элемент из списка»
textual
Листинг программы
{ h - указатель на первый элемент списка } x := h; while x^.next <> nil do { пока очередной элемент на что-то указывает: } begin if x^.next^.data = 5 then { если он указывает на элемент со значением 5 } begin buf := x^.next; { то запоминаем то, что надо удалить ... } x^.next := buf^.next; { элемент будет выброшен, значит, надо указатель с предыдущего тоже поправить } dispose(buf) { удаляем элемент = 5 из памяти } end else x := x^.next; { нет, следующий элемент не равен 5, идем дальше } end; { отдельно проверяем самый первый элемент, он тоже может быть = 5, тогда его надо удалить } if h^.data = 5 then begin buf := h; h := h^.next; dispose(buf); end;
Объяснение кода листинга программы
- Создаётся переменная
h
, которая является указателем на первый элемент списка. - В цикле
while
происходит обход всех элементов списка до тех пор, покаx^.next
не станетnil
. - Внутри цикла проверяется значение
x^.next^.data
. Если оно равно 5, то выполняется следующая последовательность действий:- Создаётся переменная
buf
, которая является копией текущего элемента списка. x^.next
устанавливается вbuf^.next
, чтобы следующий элемент списка не был повторно освобожден.- Вызывается функция
dispose(buf)
, которая удаляет элемент со значением 5 из памяти.
- Создаётся переменная
- Если значение
x^.next^.data
не равно 5, то переменнаяx
устанавливается вx^.next
, чтобы перейти к следующему элементу списка. - В конце кода проверяется, является ли первый элемент списка равным 5. Если это так, то выполняется аналогичная последовательность действий, как в пункте 3.
- Код завершается без выполнения каких-либо дополнительных действий.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д