我是否正确地为我的链表程序编写了复制构造函数?

Did I write the copy constructor for my Linked List program correctly?

我正在为我的数据结构 class 开发一个项目,该项目要求我编写一个 class 来实现一个整数链表。

  • Use an inner class for the Node.
  • Include the methods below.
  • Write a tester to enable you to test all of the methods with whatever data you want in any order.

我必须创建三个不同的构造函数。其中一个构造函数是复制构造函数。我的代码在下面显示了我做了什么,但我不确定我是否正确地编写了这个构造函数。我还有一个名为 addToFront 的方法,这是我需要在此项目中实现的众多方法之一。有人可以让我知道我需要为复制构造函数编写什么吗?我不知道我需要为复制构造函数编写什么。我已经尝试查找它,但显示的示例与我要写的内容不匹配。

public class LinkedListOfInts {
    Node head;

    private class Node {
        int value;
        Node nextNode;

        public Node(int value, Node nextNode) {
            this.value = value;
            this.nextNode = nextNode;
        }

    }
    
    public LinkedListOfInts() {
        
    }
    
    public LinkedListOfInts(LinkedListOfInts other) {
        
    }

    public void addToFront(int x) {
        head = new Node(x, head);
    }

    public String toString() {
        String result = " ";
        for (Node ptr = head; ptr != null; ptr = ptr.nextNode)
            result += ptr.value + " ";
        return result;
    }

    public static void main(String[] args) {
        LinkedListOfInts list = new LinkedListOfInts();
        for (int i = 0; i < 15; i++)
            list.addToFront(i);
        System.out.println(list);
    }

}

您可以遍历另一个列表的节点,并根据它们的值顺序创建新的尾节点。

public LinkedListOfInts(LinkedListOfInts other) {
    Node tail = null;
    for(Node n = other.head; n != null; n = n.nextNode){
        if(tail == null) this.head = tail = new Node(n.value, null);
        else {
            tail.nextNode = new Node(n.value, null);
            tail = tail.nextNode;
        }
    }
}
// ...
public static void main(String[] args) {
    LinkedListOfInts list = new LinkedListOfInts();
    for (int i = 0; i < 15; i++)
        list.addToFront(i);
    LinkedListOfInts copy = new LinkedListOfInts(list);
    System.out.println(list);
    System.out.println(copy);
}