gpt4 book ai didi

java - 队列实现,入队方法不起作用

转载 作者:行者123 更新时间:2023-11-30 09:26:12 25 4
gpt4 key购买 nike

我正在尝试编写自己的队列类。我的入队方法只是将一个对象入队,然后如果我尝试将其他任何东西入队,它几乎就像忽略它一样。这是我的代码:

public class myQueue {

private Node front;
private Node back;
private int s;

public myQueue() {
front = null;
back = null;
s = 0;
}

public void enqueue(Object x) {
if( isEmpty() )
back = front = new Node(x);
else
back = back.next = new Node(x);
s++;
}

public Object dequeue() {
Object x;
if( isEmpty() ) { System.out.println("nothing to dequeue.\nqueue empty."); }
x = front.data;
s--;
return x;
}

public boolean isEmpty() {
if(s == 0)
return true;
else
return false;
}

public void printQueue() {
if ( isEmpty() )
System.out.println("empty queue");
else {
Node temp = back;
while(temp != null) {
System.out.println(temp);
temp = temp.next;
}
}
}



}

这是我尝试将一些对象入队的主要方法:

public static void main(String[] args) {
int a = 5;
String b = "yo";
Object c = 5.5;
int d = 2;
String e = "Pen";
Object f = 9.2;

myQueue q = new myQueue();

q.enqueue(a);
q.enqueue(b);
q.enqueue(c);
q.enqueue(d);
q.enqueue(e);
q.enqueue(f);

System.out.println("\n");

q.printQueue();
}

然后我得到的输出是:

data: 9.2

关于为什么会发生这种情况有什么想法吗?

最佳答案

当你打印的时候,你是从队列的后面开始的,你应该从前面开始:

        Node temp = front; // <<< replacing back by front
while(temp != null) {
System.out.println(temp);
temp = temp.next;
}

如果你从队列的最后面开始,你将只有队列的最后一个元素被打印...

我的修复结果:

data : 5
data : yo
data : 5.5
data : 2
data : Pen
data : 9.2

关于java - 队列实现,入队方法不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15015516/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com