И ещё...у меня есть процедура, которая добавляет новый узел в конец списка:
Procedure CreateNewNode (var p:Dlist; info:integer);
var
newnode:Dlist;
pos:Dlist;
begin
New (newnode);
newnode^.info:=info;
if (p = nil) then
begin
newnode^.next:=newnode;
newnode^.prev:=newnode;
p:=newnode;
end;
newnode^.prev:=p^.prev;
newnode^.next:=p;
p^.prev^.next:=newnode;
p^.prev:=newnode;
end;