链表
type
PMYnode = ^TMYnode;
TMYnode = record
data:Pointer ;
next :PMYnode ;
end;
type
PMYlist =^TMYlist;
TMYlist = record
couunt:Integer ;
node:PMYnode ;
end;
TSearchFunc= function (where ,what :Pointer ):Boolean ;
function create ():PMYlist ;
function create ():PMYlist ;//初始化链表
var
p:PMYlist ;
begin
New(p);
p^.couunt :=0;
p^.node :=nil ;
Result :=p;
end;
procedure delnode(list:PMYlist ;index :Integer );
var
delnode,currnode:PMYnode ;
i:Integer ;
begin
if index = -1 then
begin
while list^.node <>nil do
begin
delnode := list^.node ;
list^.node :=list^.node^.next;
Dispose(delnode );
delnode :=nil;
end;
list^.couunt :=0;
end
else if index = 0 then//删除第一个节点,
begin
delnode := list^.node ; //这里是得到第一个节点吗?
list^.node :=list^.node^.next ;//这里不明白,如有5个节点,那,3,4,5节点没移动?
Dispose(delnode );
delnode :=nil ;
dec(list^.couunt );
end
else
begin
if List^.couunt <= Index then // If the position doen not exist
begin
exit;
end
else // Find the specific position given by Index and delete it
begin
CurrNode := List^.Node;
for i := 0 to Index - 2 do
begin
CurrNode := CurrNode^.Next;
end;
// Delete it
DelNode := CurrNode^.Next;
CurrNode^.Next := DelNode^.Next;
Dispose(DelNode);
DelNode := nil;
Dec(List^.couunt );
end;
end;
end;