:大家帮看看删除链表项时如何释放内存空间啊
求救:大家帮看看删除链表项时怎么释放内存空间啊?
我的是单向链表
type
incomingcallptr = ^incomingcalltype;
incomingcalltype = record
callId: Integer;
nextitem : incomingcallptr;
end;
var
callitemlists :incomingcallptr ;
//---------------------------------------
procedure TMainform.incomingcalladditem(item:incomingcallptr); //插入链表项
var
i:integer;
ptr:incomingcallptr;
begin
if (callitemlists = nil) then
begin
new(callitemlists);
callitemlists := item;
end
else
begin
ptr := callitemlists;
while (ptr.nextitem <> nil) do
ptr := ptr.nextitem; //查询链表尾
ptr.nextitem := item; //在链表尾部加入链表项
end;
end;
//---------------------------------------
procedure TMainform.incomingcalldeleteitem(index:integer); //删除链表项
var
i,count:integer;
ptr,ptr2:incomingcallptr;
begin
count := incomingcallitemcount();
ptr := callitemlists;
ptr2 := callitemlists;
sendtodebug_log( 'delete ');
if count =1 then
begin
dispose(callitemlists);
callitemlists :=nil;
end
else if count > 1 then
begin
while(i <index-1) do
begin
ptr2 :=ptr2.nextitem;
end;
ptr := ptr2.nextitem;
ptr2.nextitem := ptr2.nextitem.nextitem;
我的是单向链表
type
incomingcallptr = ^incomingcalltype;
incomingcalltype = record
callId: Integer;
nextitem : incomingcallptr;
end;
var
callitemlists :incomingcallptr ;
//---------------------------------------
procedure TMainform.incomingcalladditem(item:incomingcallptr); //插入链表项
var
i:integer;
ptr:incomingcallptr;
begin
if (callitemlists = nil) then
begin
new(callitemlists);
callitemlists := item;
end
else
begin
ptr := callitemlists;
while (ptr.nextitem <> nil) do
ptr := ptr.nextitem; //查询链表尾
ptr.nextitem := item; //在链表尾部加入链表项
end;
end;
//---------------------------------------
procedure TMainform.incomingcalldeleteitem(index:integer); //删除链表项
var
i,count:integer;
ptr,ptr2:incomingcallptr;
begin
count := incomingcallitemcount();
ptr := callitemlists;
ptr2 := callitemlists;
sendtodebug_log( 'delete ');
if count =1 then
begin
dispose(callitemlists);
callitemlists :=nil;
end
else if count > 1 then
begin
while(i <index-1) do
begin
ptr2 :=ptr2.nextitem;
end;
ptr := ptr2.nextitem;
ptr2.nextitem := ptr2.nextitem.nextitem;