Лень разбираться в твоем коде.
Так что пишу как оно должно быть.
1. Струкрура двусвязного списка:
	Код:
	type
  PLinkNode = ^TLinkNode;
  TLinkNode = record
    Data : Integer; // Ну тут данные
    Prev : PLinkNode;
    Next : PLinkNode;
  end; 
 
Теперь проход от "головы" к "хвосту":
	Код:
	procedure PrintToList_H2T(head : PLinkNode; List : TListBox);
begin
  List.Items.Clear;
  While head <> Nil Do
    Begin
      List.Items.Add(IntToStr(head.Data));
      head := head.Next;
    End;
end; 
 
Ну и в обратную сторону:
	Код:
	procedure PrintToList_T2H(tail : PLinkNode; List : TListBox);
begin
  List.Items.Clear;
  While tail <> Nil Do
    Begin
      List.Items.Add(IntToStr(head.Data));
      tail := tail.Prev;
    End;
end;