C++ 中的嵌套双向链表

Nested Doubly Linked Lists in C++

在一个双向链表中存储双向链表的最佳方式是什么?最好,我只想使用一个结构,像这样:

struct node{
    string data;
    node* next = NULL;
    node* prev = NULL;
};

并使用它能够将双向链表存储在双向链表中以保存我所有的双向链表。

我有一个普通的插入函数,但是那行不通,因为参数是(node*& start, string data)。所以我创建了另一种插入方法,它试图将双向链表存储到更大的双向链表的节点中,但从那里开始变得模糊。任何帮助,将不胜感激。

您的节点由数据和链接组成。

您可以插入链表作为数据部分的一部分:

struct Node
{
  std::string Data
  std::list</*...*/> nested_list;
  Node * previous;
  Node * next;
};

如果您不喜欢使用 std::list,您可以这样做:

struct Nested_Node
{
  Nested_Node * previous;
  Nested_Node * next;
  /* add data if necessary */
};

struct Node
{
  std::string data;
  Nested_Node * nested_head;
  Nested_Node * nested_tail;
  Node *        previous;
  Node *        next;
};

以上结构取决于您希望如何组织嵌套链表。

每个Node包含一个链表的头部和尾部。如果将嵌套列表声明为单独的结构,则可以将 Nested_Node 指针替换为列表 class。