2012-08-31 24 views
2

是否有可能在Java中創建鏈表,並且能夠在列表的中間(不僅僅是開始或結束)添加新鏈接 - 如果可能的話,無需在內存中複製粘貼列表中的大部分內容以適應新鏈接的輸入?在Java中實現特殊的鏈表方法

如果是這樣,請張貼您的例子!

+0

您好,歡迎計算器。你應該發佈代碼中的重要部分(你試過了什麼?),以便人們更好地理解它,並表明你已經付出了一些努力來解決這個問題。我建議你閱讀http://stackoverflow.com/faq – Th0rndike

+0

答案是肯定的。做你自己的作業。 – allingeek

回答

3

您可以使用LinkedList來執行此操作。

List<Integer> ints = new LinkedList<Integer>(); 
for (int i = 0; i <= 10; i++) 
    ints.add(i/2, i); 
System.out.println(ints); 

打印

[1, 3, 5, 7, 9, 10, 8, 6, 4, 2, 0] 

正如你可以看到它已經在列表的中間被添加條目。

+0

以及恆定/線性時間:) – vstoyanov

+0

很好聽的時間。你知道如何找到實現嗎?感謝您的評論! – user1639110

+0

它在你的JDK的'src.zip'中。如果你使用IDE,你可以通過' + '來查看它的源代碼。 –

2

在僞代碼一些鏈接這是一個良好的開端:

public LinkedList<E> implements List<E>{ 
    ... 

    public void add(int index, E element){ 
     Node<E> current=findNodeAt(index); 
     //add in your logic to insert this node at this location 
     //probably something like (depending on your linking) 
     element.setNext({current nodes next value}) 
     current.setnext(element);  
    } 

    private Node<E> findNodeAt(index){ 
     //iterate through list until you reach the index or end of the list 
     //then return that node 
    } 

    ... 
} 





public Node<E>{ 
    private Node<E> next; 
    ... 

    Node<E> setNext(Node<E> next){ 
     Node<E> previousNext=next; 
     this.next=next; 
     return previousNext; 
    } 

    ... 
}