是否有可能在Java中創建鏈表,並且能夠在列表的中間(不僅僅是開始或結束)添加新鏈接 - 如果可能的話,無需在內存中複製粘貼列表中的大部分內容以適應新鏈接的輸入?在Java中實現特殊的鏈表方法
如果是這樣,請張貼您的例子!
是否有可能在Java中創建鏈表,並且能夠在列表的中間(不僅僅是開始或結束)添加新鏈接 - 如果可能的話,無需在內存中複製粘貼列表中的大部分內容以適應新鏈接的輸入?在Java中實現特殊的鏈表方法
如果是這樣,請張貼您的例子!
Java中的LinkedList
類已通過其add(index, element)
方法執行此操作。
您可以使用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]
正如你可以看到它已經在列表的中間被添加條目。
以及恆定/線性時間:) – vstoyanov
很好聽的時間。你知道如何找到實現嗎?感謝您的評論! – user1639110
它在你的JDK的'src.zip'中。如果你使用IDE,你可以通過'
在僞代碼一些鏈接這是一個良好的開端:
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;
}
...
}
LinkedList
器具「列表」界面,它有您需要的add方法:http://docs.oracle.com/javase/7/docs/api/java/util/List.html#add%28int,%20E%29
我實際上是在尋找setter方法來找到這個,但你是絕對正確的!謝謝。有沒有辦法看到這個方法的實現?我試過用CTRL在Netbeans中單擊這個方法,但它並不是很豐富。 – user1639110
您好,歡迎計算器。你應該發佈代碼中的重要部分(你試過了什麼?),以便人們更好地理解它,並表明你已經付出了一些努力來解決這個問題。我建議你閱讀http://stackoverflow.com/faq – Th0rndike
答案是肯定的。做你自己的作業。 – allingeek