在Java中合并两个队列

在Java中合并两个队列,java,merge,queue,Java,Merge,Queue,我一直在编写这段代码,以便正确地合并和打印这两个队列,但没有效果。如果有人能帮我指出正确的方向或让我知道我做错了什么,我将不胜感激 节点类 public class Node<E> { private E element; private Node next; public Node(E element, Node<E> next) { // Do something here this.element = el

我一直在编写这段代码,以便正确地合并和打印这两个队列,但没有效果。如果有人能帮我指出正确的方向或让我知道我做错了什么,我将不胜感激

节点类

public class Node<E> {

    private E element;
    private Node next;

    public Node(E element, Node<E> next) {
        // Do something here
        this.element = element;
        this.next = next;
    }

    public E getElement() {
        return element;
    }
    public void setNextNode(Node<E> next) {
        // Do something here
        this.next = next;
    }

    public Node<E> getNextNode() {
        // Replace return null with something useful
        return next;
    }
}
以下是我在LinkedList类中的内容

public class LinkedListQueue<E> implements Queue<E> {

    private Node<E> head;
    private Node<E> tail;
    private int size;

    public LinkedListQueue() {    
    }

    public void enqueue(E element) {
        Node newNode = new Node(element, null);

        if (size == 0) {
            head = newNode;
        } else {
            tail.setNextNode(newNode);
        }

        tail = newNode;
        size++;
    }

    public E dequeue() {
        if (head != null) {
            E element = head.getElement();
            head = head.getNextNode();
            size--;
            if (size == 0) {
                tail = null;
            }
            return element;
        }
        return null;
    }

    public E first() {
        if (head != null) {
            return head.getElement();
        }
        return null;
    }

    public int getSize() {
        return size;
    }

    public void printList() {
        if (head != null) {
            Node currentNode = head;
            do {
                System.out.println(currentNode.toString());
                currentNode = currentNode.getNextNode();
            } while (currentNode != null);
        }
        System.out.println();
    }
}
    public static LinkedListQueue merge(LinkedListQueue q1, LinkedListQueue q2) {
    if (q1 == null) {
        return (q2);
    } else if (q2 == null) {
        return (q1);
    }
    LinkedListQueue merge = new LinkedListQueue();
    merge.enqueue(q1);
    merge.enqueue(q2);
    return merge;
}
这是我在我的主要文件里写的。它现在打印两个队列,但打印节点位置,而不是我调用其他队列时打印的内容

    LinkedListQueue q3 = new LinkedListQueue();
q3 = LinkedListQueue.merge(q1,q2);
q3.printList();

您的问题在于这段代码:

public static LinkedListQueue merge(LinkedListQueue q1, LinkedListQueue q2){
    LinkedListQueue q3 = new LinkedListQueue();
    LinkedListQueue merged = LinkedListQueue.merge(q1,q2); //problematic line
}
特别是
LinkedListQueue.merge部分(q1,q2)。此语法表示调用类
LinkedListQueue
中定义的静态方法
merge
。但是,在代码中查找
LinkedListQueue
,我没有看到定义的
静态
merge
方法

您编写代码的方式要求如下:

public class LinkedListQueue<E> implements Queue<E>{
    public static LinkedListQueue<E> merge(LinkedListQueue<E> q1, LinkedListQueue<E> q2){
        //definition here
    }

    //more class code
}
公共类LinkedListQueue实现队列{
公共静态LinkedListQueue合并(LinkedListQueue q1、LinkedListQueue q2){
//这里的定义
}
//更多类代码
}

请参见此处。

您需要更具体地说明您的问题您面临的问题是什么?现在的问题是缺少合并方法。您是否至少尝试过编写它?在尝试合并这两个队列时,合并方法显示为“未找到符号”。我刚刚编辑了我发布的内容,并在静态列表中添加了该内容method@user4935102您的调整似乎没有正确使用泛型类型(
s)。试着调整一下*我得走了,对不起。
public static LinkedListQueue merge(LinkedListQueue q1, LinkedListQueue q2){
    LinkedListQueue q3 = new LinkedListQueue();
    LinkedListQueue merged = LinkedListQueue.merge(q1,q2); //problematic line
}
public class LinkedListQueue<E> implements Queue<E>{
    public static LinkedListQueue<E> merge(LinkedListQueue<E> q1, LinkedListQueue<E> q2){
        //definition here
    }

    //more class code
}