C++ 想知道为什么这只删除节点#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

目前,该程序只会删除节点1(从第一个if语句中)和节点2,但不会超过该值。不知道我做错了什么

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的基本基础:这是一个排名问答,而不是一个论坛。谢谢。在做了那个修正后,我刚试了一下。现在一切正常,逻辑正确。