Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
头部指针不会停留在前面(C++)_C++_Linked List - Fatal编程技术网

头部指针不会停留在前面(C++)

头部指针不会停留在前面(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<

我试图创建一个链表,我有一个节点类和一个列表类。列表构造函数将Node*类型的Head和Tail设置为nullptr。这两个类都是模板化的。我的列表插入方法无法将头指针指向开头,我真的不知道为什么。当head==nullptr时,只分配一次

这里是insert方法

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);