我分配了一个函数来搜索列表中数据的最后一个实例(在这种情况下为整数)。该函数在使用if语句的行中因访问冲突而中断。

Node* List::SearchLast (int val)
{
    Node* pLast=NULL;
    Node* pNode=pHead;
    while (pHead!=NULL)
    {
        if (pNode->data==val)
            pLast=pNode;
        pNode=pNode->next;
    }
    return pLast;
}


我尝试观察pNode发生了什么。Here它应该变为零,但是then只是传递了while语句。我究竟做错了什么?

最佳答案

您的while是无限循环,请更改为:

Node* List::SearchLast(int val)
{
    Node *pLast = NULL;
    Node *pNode = pHead;
    while (pNode != 0) {
        if (pNode->data == val) pLast = pNode;
        pNode = pNode->next;
    }
    return pLast;
}

09-30 00:06