1

ヘッダーリンクリストクラスの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の場合、最初の呼び出しで5ではなく4が返されます。tempは、ヘッダーノードである最上位ノードを指しています。リストの最初の値である5を最初に返すメソッドを取得するにはどうすればよいですか?

4

1 に答える 1

1

リンクリストを実装する良い方法headerは、リスト内のノードが常に空である必要があることit should not hold a valueです。このようnextにヘッダーを呼び出すと、実際には最初の要素のみに移動します。

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

上記のダイグラムにヘッダーとして示されているように、nextは実際にはリンクリストの最初の要素です

したがって、Peek操作はスローすることは想定されておらず、NoSuchElementException代わりに返されるはずnullなので、単純なメソッドは次のようになります。

 public E peek ()
 {
   if(check element does exist using size ==0)
      return null;
   else 
      return highest.next.value;
 }
于 2012-10-24T07:27:41.980 に答える