type
LinkLabel = ^ TNodeLabel;
TNodeLabel = record
NodeData: TLabel;
Next: LinkLabel;
end;
//==============================表尾插入節點(Label)====================================
function InsNode(var nNode: LinkLabel
sInsData: TLabel) : LinkLabel;
var
TempNode,NewNode: LinkLabel;
begin
TempNode:=nNode;
New(NewNode);
NewNode^.NodeData:=sInsData;
NewNode.Next:=NIL;
if (nNode = NIL) then nNode:= NewNode
else
begin
while (TempNode.Next<>NIL) do TempNode:=TempNode.Next;
TempNode.Next:= NewNode;
end;
InsNode:= NewNOde;
end;
//================================查找節點(Label)======================================
function SerNode(var nNode: LinkLabel
sSerDataName: string) : LinkLabel;
var
tempNode: LinkLabel;
begin
tempNode:= nNode;
while (tempNode.NodeData.Name <> sSerDataName) and (tempNode <> NIL) do
tempNode:= tempNode.Next;
SerNode:= tempNode;
end;
//================================刪除節點(Label)======================================
procedure DelNode(var nNode: LinkLabel
sDelDataName: string);
var
pNode,qNode: LinkLabel;
begin
pNode:= nNode;
qNode:= nNode;
while (qNode.NodeData.Name <> sDelDataName) and (qNode.Next <> NIL)do
begin
pNode:= qNode;
qNode:= qNode.Next;
end;
if qNode = nNode then //刪除頭節點
begin
nNode:= nNode.Next;
qNode.Next:= NIL;
end
else if qNode.Next = NIL then pNode.next:= NIL //刪除尾節點
else begin
pNode.Next:= qNode.Next;
qNode.Next:= NIl;
end;
qNode.NodeData.Free;
Dispose(qNode)
//釋放空間
end;