Algorithm 在linkedlist中保留头节点而不保留数据有哪些性能优势?

Algorithm 在linkedlist中保留头节点而不保留数据有哪些性能优势?,algorithm,Algorithm,在linkedlist中保留头节点和无用数据的性能优势是什么 我阅读了一些使用head节点的linkedlist操作的实现,它只保留指向第一个节点的指针(head节点中的数据是无用的) 但是,我甚至不知道使用head节点而不是head指针有什么好处 是否有人可以澄清1个问题和2个实现,一个是头部节点,另一个是头部指针,以及性能/复杂性之间的权衡?使用虚拟头部节点的原因如下: 满足每个节点都有前一个节点的要求(使方法更简单/统一) 不处理插入和删除头部的特殊情况。它与任何其他节点一样 除此之外

在linkedlist中保留头节点和无用数据的性能优势是什么

我阅读了一些使用head节点的linkedlist操作的实现,它只保留指向第一个节点的指针(head节点中的数据是无用的)

但是,我甚至不知道使用head节点而不是head指针有什么好处


是否有人可以澄清1个问题和2个实现,一个是头部节点,另一个是头部指针,以及性能/复杂性之间的权衡?

使用虚拟头部节点的原因如下:

  • 满足每个节点都有前一个节点的要求(使方法更简单/统一)
  • 不处理插入和删除头部的特殊情况。它与任何其他节点一样

除此之外,它们不提供任何性能/内存优势。

除此之外,还有一个优势是,您可以在链接列表中保留当前可用节点的数量,因为节点会频繁添加和删除,因此,您需要保留链表头节点中节点数的记录。

第二个有意义,维护前一个节点有什么好处?实际上,这两个原因是相关的。第一种方法对于具有上一个指针的双链接列表更有用。假设您有几个将节点作为参数的方法。如果您的方法也想访问上一个节点,那么使用伪头列表可以避免“null”指针引用。但是您仍然需要检查是否遇到虚拟节点。