链表测试
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
PMyList = ^TMyList;
TMyList = record
Text: string;
Previous: PMyList;
Next: PMyList;
end;
var
FHead: PMyList;
FLast: PMyList;
CurrIndex: Integer;
FList: TList;
procedure TForm1.btn_1Click(Sender: TObject);
begin
//创建链表头
GetMem(FHead, SizeOf(TMyList));
FHead.Text := Edit1.Text;
FHead.Previous := nil;
FHead.Next := nil;
FLast := FHead;
end;
procedure TForm1.btn_2Click(Sender: TObject);
var
vCur: PMyList;
begin
//添加新元素
GetMem(vCur, SizeOf(TMyList));
vCur.Text := Edit1.Text;
FLast.Next := vCur;
vCur.Previous := FLast;
vCur.Next := nil;
FLast := vCur;
end;
procedure TForm1.btn_3Click(Sender: TObject);
var
vCur: PMyList;
begin
//显示所有元素
mmo1.Clear;
vCur := FHead;
while vCur <> nil do
begin
mmo1.Lines.Add(vCur.Text);
vCur := vCur.Next;
end;
end;
procedure TForm1.btn_4Click(Sender: TObject);
var
vCur: PMyList;
begin
mmo1.Clear;
vCur := FLast;
//反显所有元素
while vCur <> nil do
begin
mmo1.Lines.Add(vCur.Text);
vCur := vCur.Previous;
end;
end;
procedure TForm1.btn_5Click(Sender: TObject);
var
vCur, p: PMyList;
begin
//销毁链表
p := FHead;
while p <> nil do
begin
vCur := p;
p := vCur.Next;
FreeAndNil(vCur);
end;
end;