我正在考虑将列表作为数据存储在另一个列表中,但如果可能的话,我不确定如何做到这一点。
可以使用模板。如果您允许 1,7,3 列表为 5,1,7,3,则很容易
我只是坚持数据结构并忽略链表逻辑,因为 OP 已经写好了。
template<class TYPE>
class LinkedList
{
private:
struct Node
{
TYPE data;
Node * next;
Node * prev;
};
Node * head;
public:
LinkedList():head(nullptr)
{
}
~LinkedList()
{
while (head != nullptr)
{
Node *temp = head;
head = head->next;
delete temp;
}
}
// methods go here
};
这是最低要求。它需要插入、删除和迭代器或其他遍历方式来处理列表。 To be Rule of Three compliant,它还需要一个复制构造函数和一个赋值运算符(operator=)。我建议不要将Node 暴露给用户。有了它,他们可以制造各种邪恶的地狱,所以将 Nodes 隐藏在迭代器后面。
5,1,7,3 变体列表的声明类似于
LinkedList<LinkedList<int>> list;
list 指向Node。这个Node 包含另一个LinkedList,它指向ints 的Nodes 以及下一个和上一个节点。
要保存 5,6,8,10 和 1,7,3,需要一个存储数字和链表的中介
struct Intermediary
{
int data;
LinkedList<int> sublist;
};
LinkedList<Intermediary> list;
std::pair 也可以。