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

来源:互联网 发布:mac能用qq旋风吗 编辑:程序博客网 时间:2024/05/24 02:02

对于这道题目,需要知道栈和队列的性质,栈是先进后出的,而队列是先进先出的。对于栈我们可以看成是一个装羽毛球的球筒,第一个放入球筒的球在最底部,最后一个球放在最上部具体的可参照该链接。对于队列,就像买票排队,先排的先出,。言归正传,假如输入1,2,3则该程序也需要按顺序输出1,2,3,该题目用Java的解法如下所示。


import java.util.Stack;

public class Solution {

Stack<Integer> stack1 = new Stack<Integer>();//定义存储整型的栈

Stack<Integer> stack2 = new Stack<Integer>();

public void push(int node) {

stack1.push(node);//调用栈的push()方法来实现队列的push()方法,因为进栈和进队列是相似的。

}

public int pop() {

while(!stack1.isEmpty()){//判断栈1为不为空

stack2.push(stack1.pop());//将栈1中的所有数放入到栈2中,注意输入到栈1中的顺序为1,2,3 ,则栈2中的数栈顶到栈底为1,2,3

}

int st2=stack2.pop();//栈2栈顶元素出栈,例子中出来的元素为1

while(!stack2.isEmpty()){//判断栈2为不为空

stack1.push(stack2.pop());//将栈2剩余的元素(自上而下为2,3)放入到栈1中(放入后的顺序自上而下为3,2)

}

return st2;

}

}

阅读全文
0 0
原创粉丝点击