Удалить элемент из списка - Turbo Pascal

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

Подскажите способ удаления элемента из центра списка. Допусти дан однонарпвленный список, и надо удалить все элементы равные 5. Эти элементы находятся в середине . Добавлено через 2 минуты P.S Я знаю, что на форуме есть закрепленный топик с этим добром, но там не понятно =( Добавлено через 24 минуты Я вот таким образом пытаюсь удалить, но не получается=(
while x<>Nil do
begin
 buf:=x;
x:=x^.next;
if x^.data=5 then
  begin
   buf:=x^.next;
  Dispose(x);
  end;

Код к задаче: «Удалить элемент из списка - Turbo Pascal»

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;

15   голосов, оценка 4.067 из 5


СОХРАНИТЬ ССЫЛКУ
Похожие ответы