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