阿提拉全面战争 知乎:请问在C++中的指针问题

来源:百度文库 编辑:神马品牌网 时间:2024/05/07 19:13:16
p1=head;
if(head!=null)
do
{cout<<p1->loca<<" "<<p1->u<<"\n";
p1=p1->next;
}while(p1!=0);
这样遍历一个链表是没有问题的,能从头遍历到尾。
而如果上述语句紧接如下语句
p1=null;
p1=head;
p2=p1->next;
...
则该遍历就不能到底,中间推出,提示需要调试。
本人是菜鸟,请高手指点!多谢!!!(我就这么多积分)
是的,也就是说下面的语句不是while循环里的,我非常不理解为什么后面的语句会影响这个循环

总觉得你的程序写的怪怪的。
为什么要先写一个if然后用do?
如果判断条件等价,为什么不这样写?
while(p1!=null)
{cout<<p1->loca<<" "<<p1->u<<"\n";
p1=p1->next;
}
连续2次对p1赋值有意义吗?
直接写成这样看看?
p1=head;//不要上面的p1=null;
p2=p1->next;

不知道你说的什么意思呀。
下面的语句是在while下面加的么?

你的P2有定义么?
while中应该是p2!=0对吧

如果只添加这一句:p2=p1->next;
是不可能出现中间退出的问题的!
希望能帖出整段程序!