| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 446 人关注过本帖
标题:c++链表的小问题!!
只看楼主 加入收藏
newCpp
Rank: 5Rank: 5
来 自:火星
等 级:职业侠客
威 望:3
帖 子:256
专家分:375
注 册:2009-8-17
结帖率:97.83%
收藏
已结贴  问题点数:10 回复次数:4 
c++链表的小问题!!
程序代码:
#include <iostream>
using namespace std;
struct book 
{
    int i;
    int j;
    struct book *nent;
};
int main()
{
book a,b,c,*p,*p1;
a.i=10;
a.j=4;
b.i=5;
b.j=7;
c.i=6;
c.j=400;
p=&a;
a.nent=&b;
b.nent=&c;
c.nent=NULL;
p1=p;
while(p1!=NULL)
{
    cout<<p1->i<<endl<<p1->j<<endl;
      p1=p1->nent;

}
return 0;
}

这段链表里面      p1=p1->nent;
为什么删除掉了p1=p1->nene;这句话就成为了死循环了?
这里面 p1=p1->nent;有什么用啊!
其他的我大概琢磨差不多了,但这句话想半天没想出来啥意思!!
谢谢,往高手指明一下!!
谢谢
搜索更多相关主题的帖子: 链表 
2009-10-04 21:05
最左边那个
Rank: 4
等 级:业余侠客
威 望:3
帖 子:97
专家分:201
注 册:2009-4-24
收藏
得分:5 

由于p1=p这里P1指向了P
如果你删掉 p1=p1->nent(这里是改变P1的指向)这一句的话
那么P1永远都指向P,而P指向的a!=NULL,那么就会死循环下去了。

p1=p1->nent(这里是改变P1的指向),第一次P1指向p(也就是a),进入循环体里后,因为p1=p1->nent,那么P1就不再指向a了,而是指向b,依次类推!

2009-10-04 21:55
最左边那个
Rank: 4
等 级:业余侠客
威 望:3
帖 子:97
专家分:201
注 册:2009-4-24
收藏
得分:5 
另外这里:struct book *nent,其实可以直接就book *nent,不用struct,你试试!当然用了也能编译成功

2009-10-04 21:58
jjg
Rank: 2
等 级:论坛游民
帖 子:67
专家分:42
注 册:2009-8-19
收藏
得分:0 
另外这里:struct book *nent,其实可以直接就book *nent,不用struct,你试试!当然用了也能编译成功

是啊,我觉得很奇怪为什么还要用struct呢???struct和class类似,可是在书上从来都没有看过class book *nent这种表述啊,能不能解释一下
2009-10-07 22:36
最左边那个
Rank: 4
等 级:业余侠客
威 望:3
帖 子:97
专家分:201
注 册:2009-4-24
收藏
得分:0 
struct book *nent,其实可以直接就book *nent,不用struct。
因为struct book以后,book就是一个类型标识符,它的性质和int double等一样的!所以前面不需要struct了
就好像int是一个类型标识符,直接就int a什么什么的!
也可以这么说吧,struct只是为了说明book,说明了一次以后,下次用的时候就不需要struct book了!
就好像int a,这个int只是为了说明a,你说明一下以后,下次要用a的时候,就不需要再int a来用,直接就用a。

哈,说的乱78糟,希望你能看明白!
2009-10-08 19:26
快速回复:c++链表的小问题!!
数据加载中...
 
   



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

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