我已经实现了自己的链表数据结构,但是在不迭代任何内容的情况下将一个链表附加到另一个链表时遇到了问题。
以下是我想要的输出示例
public class MyList{
public static void main(String[] args){
MyList list1 = new MyList(3);
MyList list2 = new MyList(4);
System.out.println(list1); //0 1 2
System.out.println(list2); //0 1 2 3
list1.add(list2);
System.out.println(list1); //0 1 2 0 1 2 3
System.out.println(list2); //0 1 2 3
}
private class Node{
public int data;
public Node next;
public Node(int data){
this.data = data;
}
}
public Node head;
public Node tail;
public MyList(int length){
for(int i = 0; i < length; i++){
add(new Node(i));
}
}
public void add(Node node) {
if (head == null) {
//insert first node
head = node;
tail = node;
} else {
//add node to end
tail.next = node;
tail = tail.next;
}
}
//Problem!
public void add(MyList list) {
}
@Override
public String toString(){
String result = "";
for(Node iter = head; iter != null; iter = iter.next){
result += iter.data + " ";
}
return result;
}
}
当将list2添加到list1时,我希望可以扩展list1而不破坏原始的list2。 我无法想象在不迭代任何内容的情况下如何做到这一点。在add方法中遍历list2并逐个将每个节点添加到末尾是很容易的,但使用链表来做这件事感觉不太对。有人能给我一些关于如何高效地实现这个目标的建议吗?
tail.next = head;
就可以了,但这似乎会导致一切都崩溃。现在两个列表都会变得更长,其中一个的末端在另一个的前面。有任何想法是为什么吗? - Mark Dunnelist
中的所有节点? - Mark Dunne