第一个是我的节点类,它编译得很好,我现在已经用于不同的程序。我已经成功地完成了QueueArray,但没有完成QueueLinked List。
当我试图编译我的Queue LL时,我不断地得到错误,即类Node中的构造函数Node不能应用于给定的类型;Node newNode=新节点(a(;
然而,无论我在那里放了什么,我都会不断地出错,只是不知道下一步该怎么做才能让我的排队工作正常进行。有什么建议吗?
public class Node{
private Node next;
private String name;
private int ssn;
private int key;
public Node(String name, int ssn){
this.name = name;
this.ssn = ssn;
}
public void setNext(Node n){
this.next = n;
}
public int getSSN(){
return this.ssn;
}
public int getKey(){
return ssn%10000;
}
public String getName(){
return name;
}
public Node getNext(){
return this.next;
}
public void setSSN(int ssn){
this.ssn= ssn;
}
}
public class QueueLL{
private Node first;
private Node last;
private int n;
private Node queue;
public QueueLL(){
first = null;
last = null;
n = 0;
}
public boolean isEmpty(){
return first == null;
}
public Node front(){
return first;
}
public void enqueue(Node a){
Node newNode = new Node(a);
if (first == null){
first = a;
last = first;
}
else{
last = a.getNext();
last = a;
}
}
public Node dequeue(){
if (first == null){
return null;
}
else{
Node temp = first;
first = first.getNext();
return temp;
}
}
// printQueue method for QueueLL
public void printQueue() {
System.out.println(n);
Node temp = first;
while (temp != null) {
System.out.println(temp.getKey());
temp = temp.getNext();
}
}
}
您正在调用一个不存在的构造函数!Node类中唯一的构造函数是
public Node(String name, int ssn){
this.name = name;
this.ssn = ssn;
}
您应该将行Node newNode = new Node(a);
更改为Node newNode = new Node(a.getName(), a.getSSN());
QueueLL
类有以下行:
Node newNode = new Node(a);
它调用Node(Node a)
构造函数,但在Node
类中没有这样的构造函数。
您可以将呼叫更改为:
Node newNode = new Node(a.getName(), a.getSSH());
或者添加一个新的构造函数Node
类:
public Node(Node node){
this.name = node.getName();
this.ssn = node.getSSH();
}
使用此行
Node newNode = new Node(a);
您打算通过调用一个构造函数来实例化Node
class
,该构造函数需要一个已经存在的Node
对象。由于没有这样的构造函数,您会得到错误。这是你唯一的构造函数:
public Node(String name, int ssn){
this.name = name;
this.ssn = ssn;
}
它期望name
为String
,ssn
为int
。因此,您至少有三种可能的解决方案:
您创建了一个
Node
构造函数,该构造函数通过另一个构造函数构造Node
:public Node(Node input) { this.setName(input.getName()); this.setSSN(input.getSSN()); this.setNext(input.getNext()); }
您调用已经存在的构造函数:
Node newNode = new Node(a.getName(), a.getSSN());
您创建一个
static
工厂方法:public static Node createBy(Node input) { Node output = new Node(input.getName(), input.getSSN()); output.setNext(input.getNext()); return output; }
并使用它:
Node newNode = Node.createBy(a);