【发布时间】:2015-05-31 16:42:47
【问题描述】:
我一直在编写此代码以正确合并和打印这两个队列,但无济于事。如果有人可以帮助我指出正确的方向或让我知道我做错了什么,将不胜感激。
节点类
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;
}
}
链表类
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 interface Queue<E> {
public void enqueue(E e);
public E dequeue();
public E first();
public int getSize();
public void printList();
}
主类
public static void main(String[] args) {
LinkedListQueue q1 = new LinkedListQueue();
q1.enqueue(1);
q1.enqueue(2);
q1.enqueue(3);
q1.enqueue(4);
q1.enqueue(5);
q1.printList();
LinkedListQueue q2 = new LinkedListQueue();
q2.enqueue(6);
q2.enqueue(7);
q2.enqueue(8);
q2.enqueue(9);
q2.printList();
}
public static LinkedListQueue merge(LinkedListQueue q1, LinkedListQueue q2){
LinkedListQueue q3 = new LinkedListQueue();
LinkedListQueue merged = LinkedListQueue.merge(q1,q2);
}
}
这是我在 LinkedList 类中添加的内容
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;
}
这是我在 Main 中放入的内容。现在打印两个队列,但打印出节点位置,而不是当我调用其他队列时打印出的内容。
LinkedListQueue q3 = new LinkedListQueue();
q3 = LinkedListQueue.merge(q1,q2);
q3.printList();
【问题讨论】:
-
您需要更具体地了解您的问题
-
您面临什么问题?
-
好吧,现在的问题是没有合并方法。你至少尝试过写它吗?
-
在尝试合并这两个队列时,merge 方法出现,因为找不到符号。