首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

太古怪了!该怎么解决

2012-02-15 
太古怪了!intMyList::FindNode(intnum){NODE*ppheadwhile(p- num!num&&p!NULL)pp- nextif(pNUL

太古怪了!
int   MyList::FindNode(int   num)
{
NODE   *p;
p=head;
while(p-> num!=num&&p!=NULL)
    p=p-> next;

if(p==NULL)   return   0;
if(p-> num==num)   return   1;
}

在main函数中调用时:
int   r=obj.FindNode(1);
cout < <r;

只要传入的num参数在单链表中没有,运行时vc++就会报错!
如果传入的num参数在单链表中有的话,就不会出错!
太古怪了!

[解决办法]
没看出来有问题~

while((p-> num != num)&& (p! = NULL))

不过感觉也不应该是&&陷阱啊~
[解决办法]
你的单链表里面最后让他的next = NULL;了吗?
[解决办法]
while((p-> num != num)&& (p! = NULL))
======================================
你要先判断是否到了末尾,否则会出现相当于NULL-> num这样的访问,自然出错.
while((p! = NULL) &&(p-> num != num) )


[解决办法]
我来中和一下 o(∩_∩)o...

你的单链表里面最后让他的next = NULL;了吗?


你要先判断是否到了末尾,否则会出现相当于NULL-> num这样的访问,自然出错.
while((p! = NULL) &&(p-> num != num) )
[解决办法]
A_B_C_ABC正解
不过我建议
p=head;
while(p-> num!=num&&p!=NULL)
p=p-> next;
改为:
p=head;
while( p )
{
if( p-> num==num )
{
break;
}
p = p-> next;
}

这样代码看起来更罗嗦,但思路更清晰,不容易出错.


热点排行