c++ - C++构造函数和析构函数设置双向链表
问题描述
问题是使用构造函数设置一个节点,并使用析构函数确保 prev 和 next 正确连接。
class ListNode {
public:
int data;
ListNode *prev, *next;
ListNode(int Data, ListNode* Prev, ListNode *Next);
~ListNode();
};
这是我的代码
class ListNode {
public:
int data;
ListNode *prev, *next;
ListNode(int Data, ListNode *Prev, ListNode *Next) {
data = Data;
prev = Prev;
next = Next;
}
~ListNode() {
prev -> next = next;
next -> prev = prev;
}
};
我遇到了运行时错误。如何解决这个问题。谢谢
解决方案
当前节点的析构函数不得接触其他节点的数据成员。并且类中没有要明确删除的内容。因此,析构函数应隐式或显式默认,例如
~ListNode() = default;
它是整个列表的析构函数(或例如类的单独静态函数ListNode
)会费心正确地删除列表中的所有节点。
例如,您可以声明一个列表,如
class List
{
private:
ListNode
{
//...
} *head = nullptr, *tail = nullptr;
size_t size = 0;
public:
~List()
{
// delete all nodes in the list
}
//...
};
至于构造函数,那么它可以定义为
explicit ListNode( int data, ListNode *prev = nullptr, ListNode *next = nullptr)
: data( data ), prev( prev ), next( next )
{
}
推荐阅读
- php - 比较数组多维 PHP
- jquery - 在我的情况下,如何使用 jquery 获取指定的选择器?
- office-js - 共享点中保存的 Office 365 word 文档的 Retrivig ID
- php - Month number to month name in php
- reactjs - AWS GraphQL:变量“输入”已强制非空类型“输入!”的空值
- sql-server - equivalent of Postgres WITH RECURSIVE in Microsoft MSSQL?
- python - Update dict's value without too many copies of items
- c# - 试图将 '' 转换为 "" 格式
- python - 熊猫数据框试图检索数据框中的整数
- r - geom_bar 中的排序值