单链表的深拷贝用Java来输出
时间: 2024-09-14 22:12:17 浏览: 42
在Java中,为了实现单链表的深拷贝,我们通常会创建一个新的链表,其中的每个节点都是原链表节点的完全副本,包括数据和指向下一个节点的指针。以下是一个简单的示例,展示了如何使用递归方法完成单链表的深拷贝:
```java
import java.util.LinkedList;
class ListNode {
int val;
ListNode next;
ListNode(int val) {
this.val = val;
this.next = null;
}
}
ListNode deepCopy(ListNode originalList) {
if (originalList == null) {
return null;
}
// 创建一个新的节点,用于存储复制后的值
ListNode copiedNode = new ListNode(originalList.val);
// 递归复制下一个节点
copiedNode.next = deepCopy(originalList.next);
return copiedNode;
}
public void printDeepCopy(ListNode copiedList) {
LinkedList<Integer> values = new LinkedList<>();
while (copiedList != null) {
values.add(copiedList.val);
copiedList = copiedList.next;
}
System.out.println("深拷贝链表的值:");
for (int value : values) {
System.out.print(value + " -> ");
}
System.out.println(); // 输出最后一个节点
}
public static void main(String[] args) {
ListNode original = new ListNode(1);
original.next = new ListNode(2);
original.next.next = new ListNode(3);
ListNode copy = deepCopy(original);
printDeepCopy(copy);
}
```
运行上述代码后,你会看到打印出的深拷贝链表的值,即`1 -> 2 -> 3 ->`,这意味着每个节点都被独立复制,并保持了原有链表的关系。
阅读全文