当单向链表的尾部为空时为空列表



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

在单向链表的最简单实现中,您保留对"node"结构的引用,该结构包含值和对尾部的引用。

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

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

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

情况 1 - 在至少有两个节点之前不设置"尾巴"。

列表中的 0 个节点:"头"和"尾"均为空。

列表中的 1 个节点:"头"已设置,但"尾"为空。

列表中的 2+ 节点:"头"和"尾"都设置为不同的节点。

情况 2 - 如果设置了头部,则始终设置"尾巴"。

列表中的 0 个节点:"头"和"尾"均为空。

列表中的 1 个节点:"头"和"尾"都设置为同一节点。

列表中的 2+ 节点:"头"和"尾"都设置为不同的节点。

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

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

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

相关内容

  • 没有找到相关文章

最新更新