005 两个栈组成队列

Posted 曹军

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了005 两个栈组成队列相关的知识,希望对你有一定的参考价值。

一:主题

1.题目

  用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。

 

2.程序思路

  从队列与栈的特点上进行写程序。

  首先,栈的特点是先进后出,而队列是先进先出。

  所以,要实现队列,需要使用两个栈进行组合。

  做法,我以为,让第一个作为push的栈,然后,pop的时候,将第一个栈中的数据都转移到栈2,然后把最上面的弹出来。

  注意点:可能一次性push多个数据,所以,在pop的时候,再去清空栈1。  

 

3.程序


package com.jun.it.algorithm;

import java.util.Stack;

public class QueuesWithTwoStack {
static Stack<Integer> stack1 = new Stack();
static Stack<Integer> stack2 = new Stack();
public static void main(String[] args){
push(1);
push(5);
push(3);
int val=pop();
push(8);
val =pop();
System.out.println(val);
}
public static void push(int val){
if(!stack2.empty()){
stack1.push(stack2.pop());
}
stack1.push(val);
}
public static int pop(){
while(!stack1.empty()){
stack2.push(stack1.pop());
}
int pop=0;
if(!stack2.empty()){
pop = stack2.pop();
}
return pop;
}
}

 

 

  

 

以上是关于005 两个栈组成队列的主要内容,如果未能解决你的问题,请参考以下文章

由两个栈组成的队列(C++实现)

由两个栈组成的队列

栈和队列----由两个栈组成队列

由两个栈组成的队列

由两个栈组成队列

两个栈组成的队列