| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 436 人关注过本帖
标题:c++链表的问题
只看楼主 加入收藏
newCpp
Rank: 5Rank: 5
来 自:火星
等 级:职业侠客
威 望:3
帖 子:256
专家分:375
注 册:2009-8-17
结帖率:97.83%
收藏
已结贴  问题点数:20 回复次数:2 
c++链表的问题
#include <iostream>
#include <string>
using namespace std;
struct Student
{
 int age;
 string name;
    int h;
Student *hand;
};
int main()
{

 Student a,b,c, *p,*p1,*p3;
a.age=18;
a.name="fzq";
b.age=19;
b.name="fdghfgh";
c.age=20;
c.name="ddfgdf";
p=&a;
a.hand=&b;
b.hand=&c;
c.hand=0;
p1=p;
while(p!=0)

{
 int i=0;

 cout<<p->age<<" "<<p->name<<endl;
p=p->hand;

}
cout<<"hg"<<endl;
return 0;
}

这段代码里面的while循环体里面

p=p->hand;将这句话放置在

 cout<<p->age<<" "<<p->name<<endl;
的上面就会 出错这个是为什么?

为什么我将while(p->hand!=0)

这样写同上面那个将

p=p->hand;将这句话放置在

 cout<<p->age<<" "<<p->name<<endl;
有区别?

while(p->hand!=0)这样会不输出c的成员值?



p=p->hand;将这句话放置在

 cout<<p->age<<" "<<p->name<<endl;
这样的话,会不输出a的值,为什么链表尾的c可以省略输出

而a省略输出就出错了?这个是怎么回事?

我代码写错了??

谢谢高手帮忙指点一下下呀!!

O(∩_∩)O谢谢
搜索更多相关主题的帖子: 链表 
2009-10-27 22:18
东海一鱼
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:48
帖 子:757
专家分:4760
注 册:2009-8-10
收藏
得分:20 
while(p!=0)
 
{
int i=0;
 
cout<<p->age<<" "<<p->name<<endl;
p=p->hand;
 
}
cout<<"hg"<<endl;
return 0;
}

p是一个链表的节点指针,while(p!=0)p不为空,不代表下一个节点指针不为空 p->hand != NULL ?????

理解了这个,就都明白了。

p=p->hand放在cout<<p->age<<" "<<p->name<<endl前面,直接操作的就是‘当前’下一个节点。可能已经为空了,肯定挂掉。



[ 本帖最后由 东海一鱼 于 2009-10-27 22:53 编辑 ]

举世而誉之而不加劝,举世而非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。彼其于世未数数然也。
2009-10-27 22:51
newCpp
Rank: 5Rank: 5
来 自:火星
等 级:职业侠客
威 望:3
帖 子:256
专家分:375
注 册:2009-8-17
收藏
得分:0 
恩,感谢地一塌糊涂!!!
说的太对了!确实是因为最后那个输出语句没有内容好输出,导致挂班的~

编程语言视频教程在线播放学习
2009-10-27 23:01
快速回复:c++链表的问题
数据加载中...
 
   



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

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