C++ 想知道为什么这只删除节点#2
目前,该程序只会删除节点1(从第一个if语句中)和节点2,但不会超过该值。不知道我做错了什么C++ 想知道为什么这只删除节点#2,c++,C++,目前,该程序只会删除节点1(从第一个if语句中)和节点2,但不会超过该值。不知道我做错了什么 void removeMovie(myMovies *& firstMoviePtr, int removeNode) { int index = 1; myMovies *temp; myMovies *prev; myMovies *nextNode=0; if (removeNode==1) { firstMoviePtr
void removeMovie(myMovies *& firstMoviePtr, int removeNode)
{
int index = 1;
myMovies *temp;
myMovies *prev;
myMovies *nextNode=0;
if (removeNode==1) {
firstMoviePtr = firstMoviePtr->next;
}
else {
for (prev = firstMoviePtr; prev; prev = prev->next)
{
if (index == removeNode )
{
nextNode = prev->next;
break;
}
else { index++; }
}
for (myMovies * nodePtr = firstMoviePtr; nodePtr; nodePtr = nodePtr->next)
{
if (nodePtr->next == prev)nodePtr->next = nextNode; break;
}
}
}
你写道:
if (nodePtr->next == prev)nodePtr->next = nextNode; break;
可以使用以下格式重写此内容:
if (nodePtr->next == prev)
nodePtr->next = nextNode;
break;
if (nodePtr->next == prev)
{
nodePtr->next = nextNode;
break;
}
关键是你的循环总是会中断。在第一次迭代中。你不会再有第二个了
如果要使这两个语句都有条件,请使用大括号(
{}
),如下所示:
if (nodePtr->next == prev)
nodePtr->next = nextNode;
break;
if (nodePtr->next == prev)
{
nodePtr->next = nextNode;
break;
}
(免责声明:我没有检查这个逻辑对于您试图实现的算法是否正确。)
或者,在一行:
if (nodePtr->next == prev) { nodePtr->next = nextNode; break; }
(但请不要)如果(nodePtr->next==prev)nodePtr->next=nextNode;中断代码>这不是Python:
break
在这里的if
之外。另外,请正确确定变量的范围。@Quentin答案在答案部分;这不是Twitter@LightnessRacesinOrbit打字错误不被认为是有用的问题。@Quentin:没关系。如果你觉得回答这个问题不够有用,那么你不必这么做。但是,如果你这样做,它应该在适当的地方。评论不能进行同行评审。这是SO的基本基础:这是一个排名问答,而不是一个论坛。谢谢。在做了那个修正后,我刚试了一下。现在一切正常,逻辑正确。