你並沒有檢查最後一個重複節點(正如jtahlborn在他的回答中所說的,當我開始寫這個時,它被刪除了......)。您需要繼續前進,直到currentNode
爲空,但您也需要記住上一個節點,以便您可以使用它作爲尾節點。
下面是一個簡短但完整的程序,顯示它的工作。它有討厭的包訪問字段等,但它的工作原理...
class Test {
public static void main(String[] args) {
Node head = new Node("head");
append(head, new Node("foo"));
append(head, new Node("bar"));
append(head, new Node("bar"));
append(head, new Node("bar"));
append(head, new Node("baz"));
dump(head);
}
public static void append(Node head, Node newNode) {
Node currentNode = head;
Node previousNode = null;
while (currentNode != null) {
previousNode = currentNode;
if (currentNode.value.trim().equals(newNode.value.trim())) {
return;
}
currentNode = currentNode.next;
}
previousNode.next = newNode;
}
public static void dump(Node head) {
Node currentNode = head;
while (currentNode != null) {
System.out.println(currentNode.value);
currentNode = currentNode.next;
}
}
}
class Node {
String value;
Node next;
Node(String value) {
this.value = value;
}
}
你可以發佈一個簡短,但*完整的*程序,它演示了這個問題? –