在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
}