首页 > 解决方案 > 如何实现 C++ 链表构造函数?

问题描述

所以我目前正在尝试将我的 c 链表数据结构转换为 c++ 并且我在构造函数和实现代码方面遇到了一些麻烦。这是我的节点类:

template <class T>
class Node {
  public:
    T item
    LinkedList::Node<T>* next;
    Node();
    ~Node();
};

这是我的 lLinked List 类:

template <class T>
class LinkedList {
  private:
    linkedlist::Node<T>* head;
    linkedlist::Node<T>* tail;
  public:
    size_t length;
     LinkedList();
    ~LinkedList();//deconstructor
    size_t insertAtTail(T item);
    size_t insertAtHead(T item);
    size_t insertAtIndex(size_t index, T item);
    T removeTail();
    T removeHead();
    T removeAtIndex(size_t index);
};

这就是我为构造函数编写代码的方式: 编辑:从 LinkedList 中删除了 void 因为我也忘记了

LinkedList::LinkedList(){
    Node<T> node(NULL);
    head = node;
    tail = node;
}

//Create node and return reference of it.

 Node<T>::Node(T item) {
    Node* nNode = NULL;

    
    nNode->item = item;
    nNode->next = NULL;

    return nNode;
}

我不断收到 Node 的类型错误和LinkedList" is missingLinkedList 的“类模板的参数列表”。这似乎有点复杂,我不太了解如何去做。就像我为什么不能只实现标头的代码头方法中的方法,而不必在不同的文件中执行并包含头文件。非常感谢任何提示,帮助等!

标签: c++

解决方案


您的构造函数应该以模板关键字为前缀,并且还包括类型 T,如下所示:

template <class T> LinkedList<T>::LinkedList(){
    Node<T> node = new Node<T>();
    head = node;
    tail = node;
}

此外,您必须在堆上创建节点变量,您编写它的方式将使用堆栈中的局部变量来初始化类成员。


推荐阅读