c++ - 如何实现 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 missing
LinkedList 的“类模板的参数列表”。这似乎有点复杂,我不太了解如何去做。就像我为什么不能只实现标头的代码头方法中的方法,而不必在不同的文件中执行并包含头文件。非常感谢任何提示,帮助等!
解决方案
您的构造函数应该以模板关键字为前缀,并且还包括类型 T,如下所示:
template <class T> LinkedList<T>::LinkedList(){
Node<T> node = new Node<T>();
head = node;
tail = node;
}
此外,您必须在堆上创建节点变量,您编写它的方式将使用堆栈中的局部变量来初始化类成员。
推荐阅读
- python - Beautifulsoup 在搜索结果中隐藏数据
- dart - 在创建实例时使用 as 有什么好处,通常在工厂构造函数中
- php - PHP 计算与 SQL & Excel 结果不同
- python - 更新 Varchars 数组的问题 SQLALCHEMY
- http - Equivalency with percent-encoded URLs
- java - 打印最大变量数
- wordpress - AWS Elastic Beanstalk 上的 Wordpress
- python - 在 Python 中一次打印一个字符的数组
- omnet++ - 如何构建一个消息被中继的简单案例?
- c++ - 模板类/函数中的交叉前向声明