Показать сообщение отдельно
  #1  
Старый 10.02.2010, 10:40
kaizer131 kaizer131 вне форума
Начинающий
 
Регистрация: 01.11.2008
Сообщения: 112
Репутация: 10
Вопрос удаление элемента из списка

Доброго времени суток.
Встала задача при работе с однонаправленным списком удалить из него элементы если они меньше 5.
Я так понимаю, что для реализации удаления необходимо знать адрес предыдущего элемента.
Мне удалось реализовать удаление элементов, стоящих за элементом который меньше 5.
Код:
program Spisok;

{$APPTYPE CONSOLE}

uses
SysUtils;

TYPE  Link = ^Zveno;
      Zveno = record
      number:integer;
      inf : Integer;
      sled : Link;
                  End;
Var
Beg, Elem, T,T2:Link;
X:integer;
i,n:integer;
begin
Randomize;
write('Vvedi dlinnu spiska : ');
readln(n);
New(Elem);
Elem^.number:=1;
Elem^.inf:=random(10);
Elem^.sled:=nil;
Beg:=Elem;

for I := 2 to n do
begin
New(elem^.sled);
Elem:=elem^.sled;
Elem^.number:=i;
Elem^.inf:=random(10);
Elem^.sled:=nil;
end;


Elem:=beg; {Назначаем начальный узел}
while Elem<>nil do
begin
write ('[') ;
write (Elem^.number) ;
write ('] ') ;
write (Elem^.inf) ;
write (' --> ') ;
Elem:=Elem^.sled;
end;

writeln;
Elem:=beg; {Назначаем начальный узел}
T:= Elem;
while Elem<>nil do
begin

/////// Вот здесь организованна проверка и удаление элемента /////////////

if Elem^.inf < 5 then
Begin
T:=Elem^.sled;
Elem^.sled:=T^.sled;
Dispose(T);
End;

/////////////////////////////////////////////////////////////////////////

write ('[') ;
write (Elem^.number) ;
write ('] ') ;
write (Elem^.inf) ;
write (' --> ') ;
Elem:=Elem^.sled;

end;

readln;
end.


Вопрос: как организовать занесение ссылки на предыдущее звено в переменную ?
Ответить с цитированием