打开和处理输入文件时程序崩溃

时间:2015-05-19 02:35:06

标签: c++

我目前正在制作一个程序,而且我遇到了一个小问题。它从文本文件中读取数据,当数字按升序排列时,运行正常,但当我按随机顺序排列数字时,它会崩溃。我已经调试了它并将其追溯到这个if语句,但我无法弄清楚我做错了什么。

    if(tempNode != NULL)
        {
            struct doublyLinkNode* temp = new doublyLinkNode;
            temp->nextNode = tempNode;
            temp->previousNode = tempNode->previousNode;
            temp->nodeValue = noToInsert;
            tempNode->previousNode->nextNode = temp;
            tempNode->previousNode= temp;
            list->count++;
            return true;
        } // end if

当要添加的新号码在列表的当前顶部之前时,列表构建崩溃。我认为指针试图写入无效指针。

1 个答案:

答案 0 :(得分:1)

您的错误是预料之中的。您希望在当前节点之前插入节点(tempNode),
并且您在代码中使用tempNode->previousNode 如果tempNode恰好是第一个节点,那么tempNode->previousNode是什么?对,NULL
(除非你有一个循环列表,但你不会有这个问题)。这意味着 tempNode->previousNode->nextNode = temp;会崩溃。

作为此部分的解决方案,只需制作if

if(tempNode->previousNode != NULL) tempNode->previousNode->nextNode = temp;

(假设所有内容都已正确初始化)。根据您实现列表的方式,您可能还需要更改第一个节点的信息。

相关问题