java循环双链表的深拷贝
时间: 2023-11-24 08:51:01 浏览: 88
以下是Java循环双链表的深拷贝示例:
```java
package com.clarck.datastructure.dlinked;
public class DLinkedList implements Cloneable {
private Node head;
private Node tail;
private int size;
// ...
/**
* 深拷贝
*/
@Override
public DLinkedList clone() {
try {
DLinkedList newList = (DLinkedList) super.clone();
newList.head = null;
newList.tail = null;
newList.size = 0;
Node node = head;
while (node != null) {
newList.add(node.data);
node = node.next;
}
return newList;
} catch (CloneNotSupportedException e) {
throw new InternalError(e);
}
}
}
```
在上面的示例中,我们实现了`Cloneable`接口并重写了`clone()`方法。在`clone()`方法中,我们首先调用了`super.clone()`方法来创建一个新的`DLinkedList`对象,然后将其头、尾和大小设置为默认值。接下来,我们遍历原始链表并将每个节点的数据添加到新链表中。最后,我们返回新链表。
阅读全文