链表怎么遍历

郁闷的坦然 2014-01-10 07:36:14
type
PMyRec = ^MyRec;
MyRec = record
Name: string[8];
Age : Word;
Link: PMyRec;
end;

var
CurrentNode, FirstNode: PMyRec;

{建立链表}
procedure TForm1.FormCreate(Sender: TObject);
begin
New(FirstNode);
FirstNode.Name := '李四';
FirstNode.Age := 44;
FirstNode.Link := nil;
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;

Button1.Caption := '遍历链表';
Button2.Caption := '插入节点';
Button3.Caption := '删除节点';
Button4.Caption := '删除链表';

Memo1.Align := alLeft;
Memo1.ScrollBars := ssVertical;
end;



//这个只能有一个循环
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Clear;
CurrentNode := FirstNode;
while Assigned(CurrentNode) do
begin
Memo1.Lines.Add(CurrentNode.Name + #9 + IntToStr(CurrentNode.Age));
CurrentNode := CurrentNode.Link;
end;
end;


我需要的是
FOR I:=0 TO tstringlist.count -1 DO BEGIN
x:=i+1 to tstringlist.count -1do begin
if stringlist.strings[i]=stringlist.strings[x] then begin
//我在这里有操作,需要拿I的数据和X的数据做比较,类似冒泡排序
end;
end;
END;

链表怎么实现呀
...全文
464 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sololie 2014-01-11
  • 打赏
  • 举报
回复
除非是学习,否则没必要再自己弄什么链表。大把的现成的,TList、TStringList... Contnrs单元、IniFiles单元里也大把链表,这些类都已经实现了add、remove、exchange、indexof、copy、sort ...等基本算法
郁闷的坦然 2014-01-11
  • 打赏
  • 举报
回复
引用 1 楼 frank_lee_cn 的回复:
简单,再用一个array指向链表节点, nodes: array of pointer; 每次增加链表节点时,检查nodes够不够大,不够大时就增加一定量的大小,比如50; 若够大,将最后一个值指向最新节点。 这样,你就可以用 nodes 去处理了。 -------------------------------------------- 其实,TList 应该就是这样的东西, 你用TList实现,更简单(原理同上面一样)。
能否给个代码
lhy 2014-01-11
  • 打赏
  • 举报
回复
每次读出一个节点,按顺序放到一个新链表里。因为链表排序一般都是在建立时。
Frank6600 2014-01-11
  • 打赏
  • 举报
回复
简单,再用一个array指向链表节点, nodes: array of pointer; 每次增加链表节点时,检查nodes够不够大,不够大时就增加一定量的大小,比如50; 若够大,将最后一个值指向最新节点。 这样,你就可以用 nodes 去处理了。 -------------------------------------------- 其实,TList 应该就是这样的东西, 你用TList实现,更简单(原理同上面一样)。

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧