《Delphi 算法与数据结构》学习与感悟[9]: 循环链表

前面例子中, 链表的尾节点都再没有链接其他节点; 如果让尾节点再链接首节点, 不就是循环链表了吗?

本例效果图:



unit Unit1;



interface



uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls;



type

  TForm1 = class(TForm)

    Button1: TButton;

    procedure FormCreate(Sender: TObject);

    procedure Button1Click(Sender: TObject);

  end;



var

  Form1: TForm1;



implementation



{$R *.dfm}



type

  PMyRec = ^MyRec;

  MyRec = record

    Name: string[8];

    Age : Word;

    Link: PMyRec;

  end;



var

  CurrentNode: PMyRec;



{建立链表}

procedure TForm1.FormCreate(Sender: TObject);

var

  FirstNode, EndNode: PMyRec;

begin

  New(FirstNode);

  FirstNode.Name := '李四';

  FirstNode.Age  := 44;

  FirstNode.Link := nil;

  EndNode := FirstNode;     {记住尾节点}

  CurrentNode := FirstNode;



  New(FirstNode);

  FirstNode.Name := '张三';

  FirstNode.Age  := 33;

  FirstNode.Link := CurrentNode;

  CurrentNode := FirstNode;



  New(FirstNode);

  FirstNode.Name := '钱二';

  FirstNode.Age  := 22;

  FirstNode.Link := CurrentNode;

  CurrentNode := FirstNode;



  New(FirstNode);

  FirstNode.Name := '赵一';

  FirstNode.Age  := 11;

  FirstNode.Link := CurrentNode;

  CurrentNode := FirstNode;



  EndNode.Link := FirstNode;  {把首尾接起来}

end;



{循环访问链表节点}

procedure TForm1.Button1Click(Sender: TObject);

begin

  Text := CurrentNode.Name + #44 + IntToStr(CurrentNode.Age);

  CurrentNode := CurrentNode.Link;

end;



end.


 
   

你可能感兴趣的:(Delphi)