目前,我在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) {
}
我一直在玩它几个小时没有结果。如果我已经可以插入单个节点,我将如何进行此操作?
答案 0 :(得分:2)
尝试:
public void add(int position, LinkedList<T> list) {
int index = position;
for(T elem : list) {
add(index ++, elem) // call to your implementation + increment index
}
}
答案 1 :(得分:0)
我认为你可以做到
public void add(int position, final LinkedList<T> list) {
for(int i = 0; i < list.size(); i++) {
add(position++, list.get(i));
}
}
答案 2 :(得分:0)
您要做的是不要触摸要添加的列表的每个节点。
相反,要在节点list
和u
之间插入v
,您u.next
指向list.head
和list.tail.next
(最后一个元素,我不知道)知道你是否存储list.tail
或者必须遍历list
的所有节点来获取它)指向v
(旧的u.next
)
如果不知道列表类的详细信息(即有哪些成员和方法),很难编写代码示例。
特别是,由于实现自己的LinkedList对您的程序很少有用,但通常是对数据结构的练习,这是获得“添加整个列表”练习最重要的事情。
答案 3 :(得分:-1)
首先获取现有列表的大小,然后添加到当前位置
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));
}