删除链表 [英] Deleting linked list

查看:81
本文介绍了删除链表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

好的,这是交易。

我想删除列表。这就是我的工作:


node * p_temp = p_beginning;


while(p_beginning!= 0)

{

p_beginning = p_beginning-> p_next;

删除p_beginning;

}


p_temp = 0;


什么'错了?我在旧笔记本中发现了这个比喻,我不知道为什么必须这样:


node * p_temp = p_beginning;

while(p_beginning!= 0)

{

p_temp = p_beginning;

p_beginning = p_beginning-> p_next ;

删除p_beginning;

}


p_beginning = 0;


可以有人解释了吗?

OK, here''s the deal.
I''d like to delete the list.Here''s what I do:

node* p_temp = p_beginning;

while (p_beginning != 0)
{
p_beginning = p_beginning->p_next;
delete p_beginning;
}

p_temp = 0;

What''s wrong? I found this scrable in my old notebook and I don''t
understand why it has to be this way:

node* p_temp = p_beginning;
while (p_beginning != 0)
{
p_temp = p_beginning;
p_beginning = p_beginning->p_next;
delete p_beginning;
}

p_beginning = 0;

Can someone explain?

推荐答案

Daniel Vukadinovic写道:
Daniel Vukadinovic wrote:
好的,这里有'这笔交易。
我想删除这个列表。这就是我的工作:

节点* p_temp = p_beginning;

while(p_beginning) != 0)
{
p_beginning = p_beginning-> p_next;
删除p_beginning;
}


有什么不对是第一个删除命中列表中的第二个项目。第一个

一个从未被删除。

p_temp = p_beginning;
p_beginning = p_beginning-> p_next;
OK, here''s the deal.
I''d like to delete the list.Here''s what I do:

node* p_temp = p_beginning;

while (p_beginning != 0)
{
p_beginning = p_beginning->p_next;
delete p_beginning;
}
What''s wrong is the first delete hits the second item in the list. The first
one never got deleteted.
p_temp = p_beginning;
p_beginning = p_beginning->p_next;



删除p_temp;


调试函数并观察值的变化。 (然后学会使用

std :: vector<>,偶尔std :: list<>。学习编程的一部分

正在学习构建原始数据结构,部分是学习如何找到

并使用合适的库。)


-

Phlip
http://www.greencheese.org/ZeekLand < - 不是博客!!!



delete p_temp;

Debug the function and watch the values change. (Then learn to use
std::vector<>, and occassionally std::list<>. Part of learning to program
is learning to build raw data structures, and part is learning how to find
and use appropriate libraries.)

--
Phlip
http://www.greencheese.org/ZeekLand <-- NOT a blog!!!


node * p_temp = p_beginning;

while(p_beginning!= 0)
{
p_beginning = p_beginning-> p_next;
删除p_beginning;
}

p_temp = 0;
首先,p_temp没用,它什么也没做。第二个第一个

项永远不会被删除,因为你从第二项开始。第三,这个

只会崩溃,当列表到达终点并且p_beginning

变为null时,你试图在结束循环之前删除它...

node * p_temp = p_beginning;
while(p_beginning!= 0)
{
p_temp = p_beginning;
p_beginning = p_beginning-> p_next;
删除p_beginning;
这应该是删除p_temp;这将解决以上三个问题

}

p_beginning = 0;
node* p_temp = p_beginning;

while (p_beginning != 0)
{
p_beginning = p_beginning->p_next;
delete p_beginning;
}

p_temp = 0; First the p_temp is useless, it doesn''t do anything. Second the first
item never gets deleted as you start with the second item. Third, this
would simply crash, when the list reaches its end and p_beginning
becomes null you are trying to delete it before ending the loop...
node* p_temp = p_beginning;
while (p_beginning != 0)
{
p_temp = p_beginning;
p_beginning = p_beginning->p_next;
delete p_beginning; this should be delete p_temp; which would solve the above three
problems
}

p_beginning = 0;



无用如果p_beginning不是零,上面的循环就不会结束


Abdo Haji-Ali

程序员

Framez


Useless as the above loop wouldn''t end if p_beginning wasn''t zero

Abdo Haji-Ali
Programmer
In|Framez


谢谢!


为什么p_temp = p_beginning做了两次?


HERE - > node * p_temp = p_beginning;

while(p_beginning!= 0)

{

AND HERE - > p_temp = p_beginning;

p_beginning = p_beginning-> p_next;

删除p_beginning;

}


什么是p_beginning给p_temp的价值是什么?

它没有在任何地方使用?

Thanks!

Why is p_temp = p_beginning done twice?

HERE --> node* p_temp = p_beginning;
while (p_beginning != 0)
{
AND HERE --> p_temp = p_beginning;
p_beginning = p_beginning->p_next;
delete p_beginning;
}

And what''s the deal of assining the value of p_beginning to p_temp is
it''s not used anywhere?


这篇关于删除链表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆