现在打算每天坚持刷算法题,锻炼自己的思维。现在研一,未雨绸缪。
积累!积累!积累!为Offer做准备!!
使用两个栈实现队列的功能
一. 题目描述
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型
二. 解题思路
- 首先使用Java数据结构定义两个栈
- 定义进栈push()方法,将栈1 参数的元素code进栈
- 定义出栈方法,首先判断栈2是否为空,为空的话为下面循环出栈做准备。当栈1不空的话,循环栈1中的元素,将栈1中的元素出栈,将出栈的元素添加到栈2中,返回栈2输出的元素类型
三. 代码如下
import java.util.Stack;
public class Solution {
// 初始化栈的对象集合
Stack<Integer> stack1 = new Stack<Integer>();
Stack<Integer> stack2 = new Stack<Integer>();
// 进stack1的栈
public void push(int node) {
stack1.push(node);
}
// 元素出栈stack1,进栈stack2
public int pop() {
// 首先判断stack2是否为空,为空的话可以进栈stack2,然后出栈stack2
// 判断stack2是否为空,为空的话可以把栈stack1的元素全部入栈
if(stack2.isEmpty()){
// 当stack1不为空的时候,元素出栈stack1,入栈stack2
while(!stack1.isEmpty()){
// 将stack1出栈的元素添加到stack2
stack2.add(stack1.pop());
}
}
//返回的是 栈2 的元素进行出栈
return stack2.pop();
}
}
四. 知识点总结
- 栈的定义:Java的数据结构
- 出栈和进栈调用的库方法
- 一定要判断栈空和非空
- 返回值要定义清楚,我们的目的是模仿队列进行输出
- 最后返回的是一个栈2的输出值