链接列表错误,c ++

时间:2015-11-06 23:38:27

标签: c++ linked-list

在我用户制作的链接列表中,我用来保存我正在制作的基于文本的rpg的广告资源,我的链接列表中遇到了删除功能的错误。我想知道是否有人能指出我为什么会收到这个错误。

void InventoryList::deleteNode(int num)
{
    ListNode *previousNode; //To point to the previous node
    ListNode *nodePtr; //to traverse the list

    int number = 1;

    //if the head is empty do nothing
    if (!head)
    {
        return;
    }
    //Determine if the first node is the value
    if (1 == num)
    {

        nodePtr = head->next;
        delete head;
        head = nodePtr;
    }
    else
    {
        //intialize the node as head.
        nodePtr = head;


        //Skip nodes whose value is not equal to num.
        while (nodePtr != nullptr && number != num)
        {
            previousNode = nodePtr;
            nodePtr = nodePtr->next;

            number++;
        }
        if (nodePtr)
        {
        previousNode->next = nodePtr->next;
        delete nodePtr;
        }
    }
}

我遇到了代码的最终if语句的错误,错误是:

  

错误C4703:可能未初始化的本地指针变量' previousNode'使用

1 个答案:

答案 0 :(得分:1)

R Nar的评论说得对。初始化PreviousNode的while循环不能保证运行,因此指针可能未初始化 - 因此,您的错误消息。

要修复它,您需要在保证运行的块中初始化PreviousNode - no if / while / etc。

这可以去任何地方,但我建议你在声明时将其设置为NULL,并检查以确保它在使用时不为空。当你声明并检查你的指针时,总是习惯初始化。