//定义结构
PMyNode = ^TMyNode;
TMyNode = record
i: integer;
Next: PMyNode;
end;
//定义链表类
TMyNodeList = class(TObject)
private
FFirst: PMyNode;
FCurrNode: PMyNode;
FLast: PMyNode; //指向尾节点
FCount: integer;
public
constructor Create();
destructor Destroy; override;
procedure LoadAllNode;
function GetNext: PMyNode;
procedure Append(i:integer);
procedure Clear; //清除链表中的节点
property Count: longint read FCount;
end;
procedure TMyNodeList.Append(i:integer);
var
NewNode: PMyNode;
begin
if FCount > $FFFE then exit;
new(NewNode); //首先分配一个节点
NewNode^.i:= i;
NewNode^.Next := nil;
if FLast = nil then
begin
FFirst := NewNode;
FLast := NewNode;
FFirst.Next := nil;
end
else
begin
FLast^.Next := NewNode;
NewNode^.Next := FFirst;
FLast := NewNode;
end;
inc(FCount);
end;
procedure TMyNodeList.Clear;
var
Temp, NextNode: PMyNode;
begin
Temp := FFirst;
if Assigned(FLast) then
FLast.Next := nil;
while Temp <> nil do
begin
NextNode := Temp^.Next;
FreeMemory(Temp);
Temp := NextNode;
end;
FCount := 0;
end;
procedure TMyNodeList.Next
![Stick Out Tongue :P :P](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f61b.png)
MyNode;
begin
//Result := FCurrNode.Next;
//FCurrNode := Result;
end;
给一个思路,上边是一个链表,你可以把数据放入链表中去
链表中怎么取数据就随便了,在next里写一下代码就行了
取完之后记得处理一下链表,断开链表之后将已经取过的释放掉
再把链表接上
剩下的自己写吧[
![Big Grin :D :D](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f600.png)
]