Обычно для двусвязанных списков хранят указатели на голову и хвост списка. Соответственно,
Код:
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;
Удаление делается по аналогии.