ZBLOG

深拷贝list,用CirDoublyList(CirDoublyList list) ,用java写,加main函数验证

以下是用Java编写的深拷贝方法和示例代码,其中使用了CirDoublyList类来表示一个循环双向链表。在main函数中,我们创建了一个原始链表对象并进行了深拷贝,然后分别修改原始链表和深拷贝后的链表,以验证它们之间的独立性。

”`java import java.util.ArrayList; import java.util.List;

class CirDoublyListNode {

T data;
CirDoublyListNode<T> prev;
CirDoublyListNode<T> next;

public CirDoublyListNode(T data) {
    this.data = data;
    this.prev = null;
    this.next = null;
}

}

class CirDoublyList {

private int size;
private CirDoublyListNode<T> head;

public CirDoublyList() {
    this.size = 0;
    this.head = null;
}

public void add(T data) {
    if (head == null) {
        head = new CirDoublyListNode<>(data);
        head.prev = head;
        head.next = head;
    } else {
        CirDoublyListNode<T> newNode = new CirDoublyListNode<>(data);
        newNode.prev = head.prev;
        newNode.next = head;
        head.prev.next = newNode;
        head.prev = newNode;
    }
    size++;
}

public void printList() {
    if (head == null) return;

    CirDoublyListNode<T> current = head;

    do {
        System.out.print(current.data + " ");
        current = current.next;
    } while (current != head);

    System.out.println();
}

public CirDoublyList<T> deepCopy() {
    if (head == null) return null;

    CirDoublyList<T> newList = new CirDoublyList<>();

    CirDoublyListNode<T> current = head;
    do {
        newList.add(current.data);
        current = current.next;
    } while (current != head);

    return newList;
}

}

public class Main {

public static void main(String[] args) {
    CirDoublyList<Integer> originalList = new CirDoublyList<>();
    originalList.add(1);
    originalList.add(2);
    originalList.add(3);

    // 深拷贝
    CirDoublyList<Integer> copiedList = new CirDoublyList<>(originalList);

    System.out.println("原始链表:");
    originalList.printList();

    System.out.println("深拷贝后的链表:");
    copiedList.printList();

    // 修改原始链表
 <br/><br/><br/><font size=1 color=#CCCCCC>内容由零声教学AI助手提供,问题来源于学员提问</font>

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=8141

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?