标题:[求助]用对象实现链表!
只看楼主
maoguoqing
Rank: 6Rank: 6
来 自:重庆
等 级:贵宾
威 望:28
帖 子:2980
专家分:19
注 册:2005-12-5
 问题点数:0 回复次数:3 
[求助]用对象实现链表!
class list{
int x;
list *next;
public:
list();
~list();
...
};

...
list::~list()
{
if(next) delete next;//请问这句话什么意思啊?怎么实现的呢?
}
..
搜索更多相关主题的帖子: 链表 对象 
2006-02-27 22:07
DarkHero
Rank: 1
等 级:新手上路
威 望:2
帖 子:191
专家分:0
注 册:2006-1-14
得分:0 
因为next是个指向list对象的指针,如果它指向某个list对象,那么它的值就是那个list对象的地址,不可能为0,所以相当于true了;如果该指针被删除了(确切地说应该是它的值被删除吧),比如delete next,那么系统将释放它指向的list对象的空间,并把该指针的值设为0,所以相当于 false了。

for( ; me.alive() ; ) { 淡泊名利,志存高远 } //Forever
2006-02-28 18:07
maoguoqing
Rank: 6Rank: 6
来 自:重庆
等 级:贵宾
威 望:28
帖 子:2980
专家分:19
注 册:2005-12-5
得分:0 

哦 谢谢哈。
能不能再帮我解释一下这个程序

list::list()
{
next=NULL;
}
list::~list()
{
if (next) delete next;
}
void list::add(int a)
{
list *p=new list;
p->x=a;
p->next=next;
next=p;
}
void list::print()
{
for (list*p=next;p!=NULL;p=p->next)//这里next怎么取得头指针的呢?
cout<<p->x<<endl;
}

int main()
{
list q;
q.add(3);
q.add(-5);
...
q.print();
}


天行健,君子以自强不息!!QQ:68660681
2006-02-28 22:22
DarkHero
Rank: 1
等 级:新手上路
威 望:2
帖 子:191
专家分:0
注 册:2006-1-14
得分:0 
这里的next就相当于头指针啊,
void list::add(int a)
{
list *p=new list;
p->x=a;
p->next=next;
next=p;
}
你看,每当add(int)一个数:先创建一个新节点,然后让它指向next,然后再让next指向它。
这里跟栈似的,后进(先出)。

for( ; me.alive() ; ) { 淡泊名利,志存高远 } //Forever
2006-03-01 21:05



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-47528-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.081554 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved