使用链表实现队列,获取与我的Node类相关的错误



第一个是我的节点类,它编译得很好,我现在已经用于不同的程序。我已经成功地完成了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;
}

它期望nameStringssnint。因此,您至少有三种可能的解决方案:

  1. 您创建了一个Node构造函数,该构造函数通过另一个构造函数构造Node

    public Node(Node input) { this.setName(input.getName()); this.setSSN(input.getSSN()); this.setNext(input.getNext()); }

  2. 您调用已经存在的构造函数:

    Node newNode = new Node(a.getName(), a.getSSN());

  3. 您创建一个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);

相关内容

  • 没有找到相关文章

最新更新