Показать сообщение отдельно
  #4  
Старый 31.05.2012, 19:55
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,100
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Обычно для двусвязанных списков хранят указатели на голову и хвост списка. Соответственно,
Код:
type
  PLinkedListItem = ^ TLinkedListItem;
  TLinkedListItem = record
     Data : Integer;
     Next : PLinkedListItem;
     Prev : PLinkedListItem;
  end;

var
  PHead : PLinedListItem;
  PTail : PLinedListItem;

procedure RemoveFirst;
var
  PItem : PLinedListItem;
begin
  If PHead <> Nil Then
    Begin
      PItem := PHead;
      PHead := PHead.Next;
      PHead.Prev := Nil;

      If PTail = PItem Then PTail := Nil;

      Dispose(PItem);
   End;
end;

Удаление делается по аналогии.
Ответить с цитированием