头部指针不会停留在前面(C++)
我试图创建一个链表,我有一个节点类和一个列表类。列表构造函数将Node*类型的Head和Tail设置为nullptr。这两个类都是模板化的。我的列表插入方法无法将头指针指向开头,我真的不知道为什么。当head==nullptr时,只分配一次 这里是insert方法头部指针不会停留在前面(C++),c++,linked-list,C++,Linked List,我试图创建一个链表,我有一个节点类和一个列表类。列表构造函数将Node*类型的Head和Tail设置为nullptr。这两个类都是模板化的。我的列表插入方法无法将头指针指向开头,我真的不知道为什么。当head==nullptr时,只分配一次 这里是insert方法 void insert(T item) { //insert item at end //allocate new node Node<T> tempNode = Node<
void insert(T item)
{
//insert item at end
//allocate new node
Node<T> tempNode = Node<T>(item);
Node<T> *temp = &tempNode;
//put in data
temp->setData(item);
//end of list set to null
temp->setNext(nullptr);
//if first node
if (head == nullptr)
{
//head and tail are set to temp
head = temp;
cout << "head1: " << head->getData() << endl;
tail = temp;
} else //not first node in list
{ cout << "head: " << head->getData() << endl;
tail->setNext(temp);
tail = temp;
}
cout << "tail: " << tail->getData() << endl;
cout << "head: " << head->getData() << endl;
cout << "head: " << head << endl;
}
一个主要问题是这两条线:
Node<T> tempNode = Node<T>(item);
Node<T> *temp = &tempNode;
当然,您必须记住删除以这种方式创建的所有节点,以避免内存泄漏。谢谢!这就解决了问题。我以前尝试过使用新的操作符,但我没有在末尾添加项,因为我不知道我可以这样做。。。非常感谢你!!你的C++书应该有一个关于创建和构造对象的章节
Node<T> tempNode = Node<T>(item);
Node<T> *temp = &tempNode;
Node<T>* temp = new Node<T>(item);