![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Доброго времени суток.
Встала задача при работе с однонаправленным списком удалить из него элементы если они меньше 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. Вопрос: как организовать занесение ссылки на предыдущее звено в переменную ? |