我需要编写一个模板,其中的节点包含具有2个数据结构的数据:一个映射和一个最小堆,两者都有相同的节点,每两个相同的节点都连接在一起。 问题是我需要堆知道heapify的节点字段,例如,我不知道什么是正确的方法,朋友们? Node中的公共字段?在堆中写入Node?使用getter和setter? 谢谢大家的帮助。
答案 0 :(得分:1)
嗯,链接列表可能是这样的:
namespace my_namespace
{
namespace detail
{
template <class T>
struct Node
{
T value;
Node* previous;
Node* next;
//constructors and other things that might help
};
}
template <class T>
class LinkedList
{
private:
detail::Node<T>* head;
public:
//all it does
};
}
没有特别的理由从用户或LinkedList类隐藏Node结构(将它放入详细命名空间应该绰绰有余):LinkedList需要它并且Node本身对用户来说几乎没用。所有封装都取决于LinkedList来实现:它不应该给出它的头部(或任何其他Node*
)。