使用两个队列模拟堆栈结构
2020-07-10 本文已影响0人
老奶猹
两个队列模拟一个堆栈,队列是先进先出,而堆栈是先进后出。模拟如下
队列a和b
(1)入栈:a队列为空,b为空。例:则将”a,b,c,d,e”需要入栈的元素先放a中,a进栈为”a,b,c,d,e”
(2)出栈:a队列目前的元素为”a,b,c,,d,e”。将a队列依次加入Arraylist集合a中。以倒序的方法,将a中的集
合取出,放入b队列中,再将b队列出列。代码如下:
class
{
public static void main(String[] args)
{
Queue<String> q1 = new LinkedList<String>(); //a队列
Queue<String> q2 = new LinkedList<String>();//b队列
ArrayList<String> a = new ArrayList<String>();//arrayList是中间参数
//往队列q1中存储元素
q1.offer("a");
q1.offer("b");
q1.offer("c");
q1.offer("d");
q1.offer("e");
//将q1队列中的元素存储进list集合中
for(String q : q1){
a.add(q);
System.out.println(q);
}
//以倒序的方法取出a中依次加入的元素
for(int i=a.size()-1;i>=0;i--){
q2.offer(a.get(i));
}
//打印出栈队列
System.out.println("出栈:");
for(String q : q2){
System.out.print(q);
}
}
}
打印结果为(遵循栈模式先进后出):
进栈:a b c d e 出栈:e d c b a