我正在为学校作业编写我自己的双向链表实现,我使用了一个Node
在列表类内部调用的内部节点类,它表示相互链接的列表节点(通常是链表的情况)。
class DoublyLinkedList<T>
{
class Node
{
T obj;
}
}
我想知道,对于具有许多节点的大型列表,由于每个Node
对象都可能引用父列表类的一个实例,这是一个显着的开销和次优设计吗?作为一个非静态类肯定很方便——然后节点可能会改变父列表first
和last
引用,我发现它们非常适合封装。
如果我Node
设为静态,它就不能再(没有对列表的显式成员引用)用于操作父列表first
,last
并且我必须从其他方式处理它 - 列表将通过自己的方法分配和操作节点,也就是将它们相互链接,取消链接并自然调整其first
和last
值。
为了良好的设计和学习,我想知道The Smart Thing To Do (c)(如果有的话)是什么?