下面是修改后的代码,实现了循环双链表类中的 addAll() 方法,用于将一条双链表添加到当前循环双链表的末尾并合并为一个新的循环双链表:
public class DoublyList<T> {
public DoubleNode<T> head;
public DoublyList() {
this.head = new DoubleNode<T>();
this.head.prev = null;
this.head.next = null;
}
// 省略其他方法...
public void addAll(DoublyList<T> list) {
if (list == null || list.head.next == null) {
return;
}
DoubleNode<T> lastNode1 = this.head.prev; // 当前列表最后一个节点
DoubleNode<T> firstNode2 = list.head.next; // 待添加列表第一个节点
DoubleNode<T> lastNode2 = list.head.prev; // 待添加列表最后一个节点
if (lastNode1 == null) { // 如果当前列表为空,则直接将待添加列表作为结果
this.head.next = firstNode2;
firstNode2.prev = this.head;
this.head.prev = lastNode2;
lastNode2.next = this.head;
return;
}
lastNode1.next = firstNode2;
firstNode2.prev = lastNode1;
if (lastNode2 != null) { // 如果待添加列表不为空,则进行连接操作
lastNode2.next = this.head;
this.head.prev = lastNode2;
}
}
public static void main(String[] args) {
DoublyList<Integer> list1 = new DoublyList<Integer>();
DoublyList<Integer> list2 = new DoublyList<Integer>();
for (int i = 1; i <= 5; i++)
list1.insert(i);
for (int i = 6; i <= 10; i++)
list2.insert(i);
System.out.println(list1.toString());
System.out.println(list2.toString());
list1.addAll(list2);
System.out.println(list1.toString());
}
}
以上代码修改后,addAll() 方法会将双链表 list 添加到当前循环双链表的末尾,并合并为一个新的循环双链表。最后的 main 方法中展示了使用示例。
内容由零声教学AI助手提供,问题来源于学员提问




