[英]Inserting a LinkedList into another LinkedList
目前,我在LinkedList(不是Java的類)類中有一個方法,可以將單個節點添加到LinkedList中,如下所示:
public void add(int index, T v) {
if(isValidIntervalPosition(index)) {
Node<T> n = new Node<T>(v);
if(index == 0) {
n.setNext(head);
head = n;
}
else {
Node<T> m = head;
int count = 1;
while(count < index) {
m = m.getNext();
count++;
}
n.setNext(m.getNext());
m.setNext(n);
}
sz++;
}
}
但是我想實現另一種方法,將節點從輸入LinkedList添加到當前LinkedList。
這是骨架:
public void add(int position, LinkedList<T> list) {
}
我已經玩了幾個小時,沒有結果。 如果我已經可以插入單個節點,該怎么辦?
嘗試:
public void add(int position, LinkedList<T> list) {
int index = position;
for(T elem : list) {
add(index ++, elem) // call to your implementation + increment index
}
}
我想你可以做
public void add(int position, final LinkedList<T> list) {
for(int i = 0; i < list.size(); i++) {
add(position++, list.get(i));
}
}
您要做的是不要觸摸列表中的每個要添加的節點。 相反,要在節點u
和v
之間插入list
,請使u.next
指向list.head
和list.tail.next
(最后一個元素,我不知道您是否存儲list.tail
還是必須遍歷所有節點要獲取它的list
)指向v
(舊的u.next
)
如果不知道列表類的詳細信息(即存在哪些成員和方法),就很難編寫代碼示例。
特別是,由於實現自己的LinkedList對您的程序很少有用,但通常是對數據結構的練習,因此這是“添加整個列表”練習中最重要的事情。
這里首先獲取現有列表的大小,然后添加到當前位置
public static void add(int position, LinkedList<String> list) {
System.err.println(list.size());
list.add(list.size(), "aaa");
System.out.println(list.get(1));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.