Bei doppelt verketteten Listen, gibt es die beiden Zeiger *next und *previous, welche auf das vorige bzw. nächste Element der Liste verweisen.
Der Zeiger *last ermöglicht es, anders als bei einfach verketteten Listen, auch am Ende des „Zuges“ einzusteigen.
struct CWaggon {AnsiString data; CWaggon *next; CWaggon *previous; }; CWaggon *first=0,*last=0;
void __fastcall TForm1::Button1Click(TObject *Sender) {CWaggon *tmp = new CWaggon; tmp->data=Edit1->Text; tmp->next=first; tmp->previous = 0; if (tmp->next!=0)tmp->next->previous=tmp; else last=tmp; first=tmp; Edit1->Text = ""; }
void __fastcall TForm1::Button2Click(TObject *Sender) { CWaggon *tmp = new CWaggon; tmp->data=Edit2->Text; tmp->previous=last; tmp->next =0; if (tmp->previous!=0)tmp->previous->next=tmp; else first=tmp; last=tmp; Edit2->Text=""; }