所以我试图获取链表,这是我的代码到目前为止。当我在列表前面添加一个节点时,一切看起来都很好,但是当我尝试在后面添加我的第一个节点时,我的代码会编译但返回-1。我不确定它有什么问题,但我知道它在insertBack()函数中。顺便说一句,如果有任何其他错误让我知道,这是我第一次尝试链表! 谢谢!
#include "LinkedList.h"
#include <iostream>
#include <stddef.h>
LinkedList::LinkedList()
{
head=NULL;
length=0;
}
void LinkedList::InsertFront(int item)
{
Node *temp = new Node;
temp->data = item;
temp->next = head;
head = temp;
length++;
}
void LinkedList::InsertBack(int item)
{
Node *temp1 = new Node;
temp1 = head;
while(temp1->next != NULL)
{
temp1 = temp1->next;
}
Node *temp = new Node;
temp->data = item;
temp->next = NULL;
temp1->next = temp;
length++;
}
void LinkedList::MakeEmpty()
{
Node *temp;
while(head!= NULL)
{
temp = head;
head = head->next;
delete temp;
}
length;
}
void LinkedList::ShowItems()
{
Node *temp = head;
while(temp != NULL)
{
std::cout<<temp->data<<std::endl;
temp = temp->next;
}
}
LinkedList::~LinkedList()
{
MakeEmpty();
}
答案 0 :(得分:1)
确保在引用之前已经分配了头部。当你运行InsertBack时,这是你问题的最可能的来源,这取决于已经初始化head,因为它遍历列表中从第一个开始的所有元素,但假设已经分配了第一个元素。
它还会进行不必要的内存分配 - 它会创建一个新的Node,然后立即写入指向它的东西,那么重点是什么?
Node *temp1 = new Node;
temp1 = head;