2016-11-15 61 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