【发布时间】:2021-12-11 00:30:03
【问题描述】:
我正在实现一个双向链表,其中每个节点都有两个指针。一个指向列表中的下一个节点,而另一个指向前一个节点。 节点结构由一个整数和一个指向列表中下一个节点的节点指针组成。另一个指向列表中前一个指针的指针。 该类包含两个节点指针:一个指向列表的头部,一个指向列表的尾部。如果列表为空,则它们都应指向 nullptr。
我的代码是
#include <iostream>
using namespace std;
struct Node
{
int value;
Node *next;
Node *tail; //previous node pointer
};
class LinkedList
{
private:
Node *head;
Node *tail;
public:
int size;
LinkedList()
{
head = nullptr;
tail = nullptr;
size = 0;
}
int length()
{
return size;
}
void append(int val)
{
if (head == nullptr)
{
head = new Node(val);
return;
}
// Iterate to end of list
Node *current;
current = head;
while (current->next != nullptr)
{
current = current->next;
}
// Link new node to end of list
current->next = new Node(val);
}
};
int main()
{
};
我收到此错误:
错误:没有用于初始化“节点”的匹配构造函数 头 = 新节点(val); ^ ~~~ linked_list.cpp:4:8:注意:候选构造函数(隐式复制构造函数)不可行:第一次没有从“int”到“const Node”的已知转换 争论 结构节点 ^ linked_list.cpp:4:8:注意:候选构造函数(隐式默认构造函数)不可行:需要 0 个参数,但提供了 1 个 产生 2 个错误。欢迎任何关于我可以在哪里阅读有关此主题的更多信息的建议/链接:) 提前谢谢您!
【问题讨论】:
-
出于好奇,为什么您要实现自己的双链表?作业?教育目的?跟随教程?特殊行为?我很好奇,因为 C++ 有开箱即用的
std::list,它经过了很好的审查和调试。 -
这是学校作业:)另外,我是 C++ 新手。
-
您在“head = new Node(val);”中使用“val”但是,作为输入,您尚未为此定义构造函数。您应该获取此输入并将其保存在结构中的整数变量中。
-
错误说它找不到适合
Node的构造函数,因为它无法将val从int转换为const Node,并且默认构造函数不接受争论。你为什么放弃那里?你不明白错误信息吗?