如果在結構中再拿出 4 個位元組的地址空間指向上一個節點, 就成了雙向鏈表了.
本例:
unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); end;var Form1: TForm1;implementation{$R *.dfm}type PMyRec = ^MyRec; MyRec = record Name: string[8]; Age : Word; Prev,Next: PMyRec; {上一個與下一個的結構指標} end;var CurrentNode: PMyRec;{建立雙向鏈表}procedure TForm1.FormCreate(Sender: TObject);var PrevNode: PMyRec; i: Integer;begin PrevNode := nil; for i := 65 to 71 do {建七個節點, 準備用 AA, BB, CC, DD, EE, FF, GG 來指定 MyRec.Name } begin New(CurrentNode); CurrentNode.Name := Chr(i) + Chr(i); CurrentNode.Age := i; CurrentNode.Prev := PrevNode; if Assigned(PrevNode) then PrevNode.Next := CurrentNode; PrevNode := CurrentNode; end; Button1.Caption := '上一個'; Button2.Caption := '下一個';end;{上一個}procedure TForm1.Button1Click(Sender: TObject);begin if Assigned(CurrentNode.Prev) then begin CurrentNode := CurrentNode.Prev; Text := CurrentNode.Name + #44 + IntToStr(CurrentNode.Age); end else Text := '這是第一個節點';end;{下一個}procedure TForm1.Button2Click(Sender: TObject);begin if Assigned(CurrentNode.Next) then begin CurrentNode := CurrentNode.Next; Text := CurrentNode.Name + #44 + IntToStr(CurrentNode.Age); end else Text := '這是最後一個節點';end;end.