gpt4 book ai didi

Java方法不返回链表的第一个值

转载 作者:太空宇宙 更新时间:2023-11-04 07:59:37 24 4
gpt4 key购买 nike

我正在尝试为 header 链表类编写一个 peek 方法。但是,它不会返回第一个值。

public E peek () throws NoSuchElementException {
ListNode<E> temp = highest;
ListNode<E> r = temp;

if (temp.next == null) throw new NoSuchElementException();
else r.next = temp.next.next;

return r.next.value;
}

我明白为什么它不返回第一个值。因为在我的代码中 else r.next 将已经指向列表中的下一个节点。因此,对于 5,4,3,2,1 ,它将在第一次调用时返回 4,而不是 5。 temp 指向最高节点,即头节点。如何获得返回列表中第一个值(5)的方法?

最佳答案

实现链表的一个好方法是,header 应该始终是列表中的空节点,因此它不应该包含值。这样,当您在 header 上调用 next 时,您实际上只转到第一个元素。

header http://easy2teach.net/wp-content/uploads/2011/06/header-linked-list.jpg

如上图所示,标题下一个实际上是链接列表的第一个元素

所以你的 Peek 操作不应该抛出 NoSuchElementException 而应该返回 null 所以简单的方法可以是

 public E peek ()
{
if(check element does exist using size ==0)
return null;
else
return highest.next.value;
}

关于Java方法不返回链表的第一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13044506/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com