当前位置: 首页 > 知识库问答 >
问题:

单链接列表的尾部为空时的空列表

万高洁
2023-03-14

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

共有2个答案

施自珍
2023-03-14

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

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

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

列表中的1个节点:设置了“头”,但“尾”为空。

列表中的2个节点:“头”和“尾”都设置为不同的节点。

情况2-如果头部已设置,则始终设置'尾部'。

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

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

列表中的2个节点:“头”和“尾”都设置为不同的节点。

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

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

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

岳玉堂
2023-03-14

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

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

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

 类似资料:
  • 我正在尝试创建二维双链接圆形阵列,从txt文件读取数据并自动创建节点。我的程序正在正确地读取第一行,但当它到达下一行并开始创建下一个节点时,会出现空指针。我不明白为什么会这样,请帮帮我。 这些都是错误。Null指针在尝试创建第二个节点时发生。它正确地创建第一个节点,而不是紧接着创建空指针。 第77行=位置next=n; 第69行=插入后(head.prev, x); 第18行=mList。镶片(k

  • 我的头指针应该是空的,因为我不希望在创建链接列表时它有任何值。 我知道不能取消对空值的引用,但我只想将它的下一个节点指向新的节点。有人能解释一下我如何指向头部节点指针吗?

  • 我试图在c语言中的双链表中使用null对象模式,但我似乎找不到一种在保持代码整洁的同时使用它的方法。 问题出在以下代码中: 如果下一个/上一个节点是,则和将返回对象。 此操作失败的用例-当节点为头节点时: 下面将第二个节点的上一个指针设置为导致内存泄漏的NullNode对象。 我在这里要做的是保持NOP,保持代码干净,不受和类类型比较的影响, 任何建议都将不胜感激!

  • 问题内容: 我有一个清单: 列表的长度不确定,因此我尝试将对象追加到list1的末尾,如下所示: 但是我的输出始终显示此错误:AttributeError:’NoneType’对象没有属性’append’ 这是因为list1从一个空列表开始吗?如何解决此错误? 问题答案: 实际 更改 列表。同样,它需要一个 item ,而不是一个列表。因此,您所需要做的就是 (请注意,在这种情况下,您可以使用。)

  • 我目前正在为Java中的循环链表工作。我们应该能够在列表的前面插入和后面插入。但是,我已经让这些方法在循环链表类中正常工作。 我得到的结果是 对于第二次插入,这里的next指向null应该指向列表的头部。 节点类 循环链表类 主班