我编写了这个程序,编译时崩溃了。它说可执行文件已停止工作,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;
}
}
答案 0 :(得分:5)
此:
if (head == NULL) {
initPage(head, programName);
将null传递给initPage,然后立即取消引用它。吊杆。
提示:在使用之前,请务必检查指针是否为null。
此外,initPage是addPage中不完整的代码副本。似乎总是在addPage中运行创建新页面的代码(即,根本不调用initPage()),然后,一旦你有了一个页面,测试头为null,看看你是否应该只设置前往新页面或迭代列表寻找结束。