public static void reverse(Stack arr){
Queue<Integer> arrCopy=new LinkedList<Integer>();
while(!arr.empty()){
arrCopy.add((int)arr.pop());
};
System.out.print("{ ");
while(!arrCopy.isEmpty()){
System.out.print((int)arrCopy.remove() + ", ");
}
System.out.print("}");
}
所以,我有一个包含10个整数的栈,并希望以相反的顺序打印它。我编写了一个新方法,创建一个队列,每次使用pop从堆栈中删除并返回整数时,它将其添加到队列中。问题在于,
while(!arrCopy.isEmpty())
似乎没有执行,队列为空。这里是否存在转换问题?或者是我添加元素到队列的方式有问题?谢谢!
编辑:这是我的主要函数代码(也是我的其余代码):
public static void main(String[] args) {
Random rand = new Random();
Stack<Integer> a=new Stack<Integer>();
for (int i=0; i<10; i++){
a.push(rand.nextInt(50));
}
System.out.print("{ ");
while(!a.empty()){
System.out.print((int)a.pop() + ", ");
}
System.out.print("}");
reverse(a);
}
解决方案: 我终于让它工作了,谢谢!问题在于我使用pop从栈中返回(同时删除)所有元素,以便在反转之前打印它,这导致了一个空栈。这是我为了让它工作所做的修改!
public static Queue reverse(Stack arr){
Queue<Integer> arrCopy=new LinkedList<Integer>();
while(!arr.empty()){
arrCopy.add((int)arr.pop());
}
return arrCopy;
}
public static void main(String[] args) {
Random rand = new Random();
Stack<Integer> a=new Stack<Integer>();
for (int i=0; i<10; i++){
a.push(rand.nextInt(50));
}
System.out.println("List:");
System.out.println(a);
System.out.println("Reversed List:");
System.out.println(reverse(a));
}
Stack
不是空的吗? - undefinedStack
的代码吗? - undefined