提问人: 提问时间:10/16/2021 更新时间:10/17/2021 访问量:101
我是否正确编写了链表程序的复制构造函数?
Did I write the copy constructor for my Linked List program correctly?
问:
我正在为我的数据结构类做一个项目,它要求我编写一个类来实现一个整数的链表。
- 对 Node 使用内部类。
- 包括以下方法。
- 编写一个测试程序,使您能够以任何顺序使用所需的任何数据测试所有方法。
我必须创建三个不同的构造函数。其中一个构造函数是复制构造函数。我的代码在下面显示了我做了什么,但我不确定我是否正确编写了这个构造函数。我还有一个名为 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);
}
}
答:
0赞
Unmitigated
10/17/2021
#1
您可以遍历其他列表的节点,并根据它们的值按顺序创建新的尾节点。
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);
}
评论
LinkedListOfIntsTest