64,654
社区成员
发帖
与我相关
我的任务
分享
bool mylist::getpos(int i,myvalue &x)
{
if(i>length || i <=0)
{
cout <<"error getpos!" < <endl;
return false;
}
else
{
node *p=new node; // 刚分配的内存
p=head->next; // 马上就丢掉了?!!
for(int j=1;j <i;j++) // 这里飞雪已经说了
// 另一个问题,虽然不知道你的 length 和 i 的具体含义,
// 但这里的循环条件应该还是有问题。
// 如果 length 为 1,那 i 的有效值又会是多少?j 从 1 到 i - 1 能找到目标节点吗?
p=p->next; // 另外,如果你的程序逻辑正确,依靠 length 不判断 p 也可以,
// 但很明显,你的程序还存在其它的问题
x=p->value ;
delete p; // 那这里又 delete 的是什么?!!
cout < <"success getpos" < <endl;
return true;
}
}
node *p=head;
while(i--) p=p->next;
x=p->value ;
cout <<"success getpos" <<endl;
//刚才没有看清楚,应该是这样
node *p=head->next;
for(int j=1;j <i;j++)
p=p->next;
x=p->value ;
cout <<"success getpos" <<endl;
for(int j=1;p&&j <i;j++) //加一个p&&,不然就会出问题
p=p->next;