Java方法没有';t返回链表的第一个值

Java方法没有';t返回链表的第一个值,java,Java,我正在尝试为标题链接列表类编写一个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; r

我正在尝试为标题链接列表类编写一个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;
}
public E peek()抛出NoTouchElementException{
ListNode温度=最高;
listnoder=temp;
如果(temp.next==null)抛出新的NoSuchElementException();
else r.next=临时next.next;
返回r.next.value;
}

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

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

如上图所示,digram As header next实际上是链表的第一个元素

所以Peek操作不应该抛出
NoTouchElementException
,相反,它应该返回
null
,这样简单的方法就可以

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

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

如上图所示,digram As header next实际上是链表的第一个元素

所以Peek操作不应该抛出
NoTouchElementException
,相反,它应该返回
null
,这样简单的方法就可以

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

那么,问题是什么?刚刚编辑过。问题是:如何让peek方法返回列表中的第一个值,5?您可以使用
header.next.value
所以使用“returnhighest.next.value”?它成功返回第一个值,但不返回后续值4,3,2,1。@user1766888检查答案如果有疑问,请告诉我。问题是什么?只需编辑它。问题是:如何让peek方法返回列表中的第一个值,5?您可以使用
header.next.value
所以使用“returnhighest.next.value”?它成功返回第一个值,但不返回后续值4,3,2,1。@user1766888检查答案如果有疑问,请告诉我。是。我知道header->5->4->3->2->1,但是如果多次调用peek,您将如何返回其他值?例如,第一次偷看将返回5。但随后对peek的调用只返回5。如何仅使用peek方法遍历列表?peek操作仅返回fist元素。是。我知道header->5->4->3->2->1,但是如果多次调用peek,您将如何返回其他值?例如,第一次偷看将返回5。但随后对peek的调用只返回5。如何仅使用peek方法遍历列表?peek操作仅返回第一个元素。