尝试将节点添加到链接列表时程序崩溃

时间:2016-03-21 07:51:38

标签: c++ linked-list

我编写了这个程序,编译时崩溃了。它说可执行文件已停止工作,Windows正试图找到解决方案。我相信这个问题出现在我编写的addPage函数中,用于向链表添加节点,但我不确定是什么导致了这个问题。

void initPage(struct page *head, string programName) {

// Assign Properties of the First Node in the Linked List
head->programName = programName;
head->nextPage = NULL;

}

void addPage(struct page *head, string programName) {

// Initialize First Page if Not Initialized
if (head == NULL) {
    initPage(head, programName);
    return;
}

// Setup the New Page
page *newPage = new page;
newPage->programName = programName;
newPage->nextPage = NULL;

// Set the Pointer to the Beginning of the Linked List
page *current = head;

// While Traversing the Linked List
while(current) {

    // If the End of the List is Reached, Append the Page
    if (current->nextPage == NULL) {
        current->nextPage = newPage;
        return;
    }

    // Grab the Next Page (If not at the End of the Page)
    current = current->nextPage;
}

}

1 个答案:

答案 0 :(得分:5)

此:

if (head == NULL) {
    initPage(head, programName);

将null传递给initPage,然后立即取消引用它。吊杆。

提示:在使用之前,请务必检查指针是否为null。

此外,initPage是addPage中不完整的代码副本。似乎总是在addPage中运行创建新页面的代码(即,根本不调用initPage()),然后,一旦你有了一个页面,测试头为null,看看你是否应该只设置前往新页面或迭代列表寻找结束。