单链表尾的空列表为空

时间:2017-07-23 05:04:17

标签: linked-list

似乎人们总是说如果单链表的头部为空,那么列表是空的,但是也会检查尾部工作?假设我确定列表有一个尾部肯定,我可以检查尾部是否为空以确定它是否为空?

2 个答案:

答案 0 :(得分:0)

在单链表的最简单实现中,您保留对“节点”结构的引用,该结构包含值和对尾部的引用。

如果列表为空,则此引用为空。你既没有价值也没有尾巴。

如果列表包含至少一个元素,则引用指向头部。

答案 1 :(得分:0)

对于单链表,我假设您保留指向'head'节点和'tail'节点的指针或引用。如果是这种情况,答案取决于您如何处理设置这些引用。

  

案例1 - 在至少有两个节点之前,不设置'tail'。

     
    

0列表中的节点:'head'和'tail'都为空。

         

1列表中的节点:'head'已设置,但'tail'为空。

         

列表中的2+个节点:'head'和'tail'都设置为不同的节点。

  
     

案例2 - 如果设置了头部,则总是设置“尾部”。

     
    

0列表中的节点:'head'和'tail'都为空。

         

1列表中的节点:'head'和'tail'都设置为同一节点。

         

列表中的2+个节点:'head'和'tail'都设置为不同的节点。

  

如果您希望单个节点表示特殊的数据,例如死角或异常值,则情况1是有意义的。在这里,您可以选择检查尾部存在的列表,以确定空列表是否会失败。

案例2编码更简单,所需的决策更少。头始终是第一个节点,尾部始终是最后一个节点,即使它们是同一个节点。在这里,你选择检查尾巴的存在是完全合理的。

如果您想检查尾部,只需确保检查库的规格或根据案例2的规范建立自己的列表。