将数字存储在堆栈中并将其打印在队列中

时间:2016-12-04 13:42:17

标签: java

如果我将数字存储在堆栈中,并且我想将它打印在队列中,我是否应该将相同的数字再次存储在队列中以进行打印,或者还有其他方法可以执行此操作?

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>();


    }

5 个答案:

答案 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()来改变堆栈。