2017-11-25 104 views
-9

我在C++中使用模板实现双链表。正如我正在尝试模板一样。执行期间模板程序崩溃

template <class T> 
class DList{ 
    Node<T> *head; 
    Node<T> *tail; 
    public: 
     Dlist(){ 
      head = tail = nullptr; 
     }  
     void addToHead(T el){ 
      Node<T> *newNode = new Node<T>(el); 
      if(head == nullptr){ 
       head = tail = newNode; 
      } 
      else{ 
       head -> prev = newNode; 
       newNode -> next = head; 
       head = newNode; 
      } 
     } }; 

使用此addToHead()时,if条件未执行。程序崩溃。

+1

你应该做一些调试。 –

+5

为什么这么多人在这里试图编写模板类和函数,当他们显然不能写非模板版本?这只是增加了复杂性,妨碍了学习C++。 –

+0

你怎么知道,比较if没有执行? – 2017-11-25 17:20:28

回答

0

他们错误的是构造函数,它只是一个错字。由于headtail指针未初始化,并且在addToHead()的if条件中将head指针与nullptr进行比较,程序崩溃。