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 两个栈组成队列的主要内容,如果未能解决你的问题,请参考以下文章