似乎人们总是说如果单链表的头部为空,那么列表是空的,但是也会检查尾部工作?假设我确定列表有一个尾部肯定,我可以检查尾部是否为空以确定它是否为空?
答案 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的规范建立自己的列表。