2016-11-15 12 views
-2

私の割り当ては、リンクされたリスト内でアルファベット順に新しい要素を配置するように、以下のコードを変更することです。現在、リストの最後に要素を追加しています。リンク先リストを右のアルファベット順に追加する

public void add(String element) { 
    Node newNode = new Node(element); 
    if (first == null) 
     first = newNode; 
    else { 
     // Find the predecessor of the element to add 
     Node current = first; 
     Node prev = null; 
     while (current != null) { 
      prev = current; 
      current = current.next; 
     } 
     // New last element 
     if (current == null) 
      prev.next = newNode; 
     else if (prev == null) { 
      newNode.next = first; 
      first = newNode; 
     } 
    } 
} 
+5

妥当な仕事のようです。あなたは質問がありましたか? – bradimus

+0

その 'else if'ブロックは決して起こりません。あなたは単に 'prev.next = newNode;'を実行することができます – 4castle

+0

どのように要素をアルファベット順に並べ替えるのですか? compareToメソッドを使用しますか? –

答えて

1

挿入するアルファベットの大きいアルファベットのノードに到達するまで、リストをトラバースし続ける必要があります。

リンクされたリストのどこを行き来しているのかをコード内で解説します。

while (current != null) { 
    prev = current; 
    current = current.next; 
} 

ノードの要素を比較する条件を追加します。

while (current != null && current.data < newNode.data) { 

トラバーサルを停止し、新しいノードを追加します。

prev.next = newNode 
newNode.next = current 
関連する問題