DELPHI中的链表问题,删除节点的时候我把上一个指针移到下一个节点头,跳过的那个节点的内存怎么释放谢谢

 我来答
RedBaronVIP
2013-01-09 · TA获得超过1147个赞
知道小有建树答主
回答量:655
采纳率:0%
帮助的人:242万
展开全部
先用一个指针标记要释放的那个节点,然后把前后两个节点链接,最后释放指针指向的这个节点。举个例子,假设head是链表头,现在要删除链表中的第i个节点:
type
PNode = ^TNode;
TNode = record
data: Integer;
next: PNode;
end;
procedure DeleteNode(var Head: PNode; Index: Integer);
var
cur, p: PNode;
i: Integer;
begin
if (Head = nil) or (Index < 1) then Exit;
if Index = 1 then
begin
p := Head;
Head := p^.next;
Dispose(p);
Exit;
end;
cur := Head;
i := 1;
while (i < Index - 1) and (cur <> nil) do
begin
cur := cur^.next;
Inc(i);
end;
if cur = nil then Exit;
p := cur^.next;
if p <> nil then
begin
cur^.next := p^.next;
Dispose(p);
end;
end;
20100621夏至
2013-01-21 · TA获得超过2568个赞
知道大有可为答主
回答量:5912
采纳率:0%
帮助的人:646万
展开全部
A->下一个= A->下一步 - >下一步;(删除节点B,我想问一下,是不是在这里加一个免费的(B)必须考虑删除的节点B?)
首先A->下一个= A->下一步 - >下指的不仅仅是一个指针,指向C删除BB不说,还有只在内存中,AC,再进行后续的关系失去自由释放的B
背后p = P->下无法删除节点的节点,但向后移动指针p的理解
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式