如果我将数字存储在堆栈中,并且我想将它打印在队列中,我是否应该将相同的数字再次存储在队列中以进行打印,或者还有其他方法可以执行此操作?
import java.util.Stack;
import java.util.PriorityQueue;
import java.util.Scanner ;
public class Qa {
public static void main(String[] args) {
Scanner input = new Scanner (System.in);
Stack<Integer> A =new Stack<Integer>();
System.out.println(" the numbers should be less than 99 ");
int x = input.nextInt() ;
while(x> 0 && x < 99){
A.push(x);
}
PriorityQueue<String> B =new PriorityQueue<String>();
}
答案 0 :(得分:2)
队列基本上是FIFO。首先将元素存储在堆栈中。弹出元素并将其再次存储在另一个堆栈中。现在弹出元素,你将获得它作为FIFO(队列)。
答案 1 :(得分:0)
您可以使用堆栈内容初始化List,然后从List打印吗?您可以从列表中的最后一个元素打印到第一个
答案 2 :(得分:0)
我不知道您具体想做什么,但如果您存储了这些数字,则无需再次重新存储。你可以从[first - &gt; last]或[last - &gt; first]中选择它们。 代码示例如下:
这样可以节省内存和时间。 :)
答案 3 :(得分:0)
假设您出于某种原因使用堆栈结构,但结果可能相同,将数据存储在一个简单的列表中,然后根据您的操作,使用该列表。您可以节省空间和时间,因为不需要复制数据或在复杂数据结构上进行不必要的循环。 希望这可以帮助。
答案 4 :(得分:0)
java.util.Stack它是一个有序的Iterable
,就像List
一样。您可以通过使用for
循环(或Java 8中的.forEach
)迭代堆栈来按插入顺序获取元素。
我正在粘贴下面的示例代码和输出:
public class MyApp {
public static void main(String[] args) {
Stack<Integer> myInts = new Stack<>();
for (int i = 0; i < 5; i++) {
myInts.push(i);
}
System.out.println("ITERATING:");
myInts.forEach(System.out::println);
System.out.println("\nPOPPING:");
while(!myInts.isEmpty()) {
System.out.println(myInts.pop());
}
}
}
输出结果为:
ITERATING:
0
1
2
3
4
POPPING:
4
3
2
1
0
您会看到,如果您对Stack
进行迭代,则会按插入顺序返回数字 。如果你的意图只是打印堆栈的内容,这种方法的另一个好处就是不必通过调用pop()
来改变堆栈。