C ++中的嵌套双链表

时间:2017-09-27 18:38:34

标签: c++ linked-list nested-lists doubly-linked-list

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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指针。

相关问题