剑指offer--两个栈实现队列

xiaoxiao2021-02-27  373

题目:

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

解析:

栈和队列的弹出序列是相反的这个两个数据结构的性质有关,一个是先进先出,一个是先进后出.所以如果用两个栈,相当于把数据的顺序倒了两次最后使得起顺序和队列一样,这是原理很简单,但是如何实现呢,这里需要注意的点有两个: 1. 弹出栈不为空不能向里面压入数据 2. 压入栈必须每次将所有的数据都压入弹出栈

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); } public int pop() { if(stack2.isEmpty()){ while(!stack1.isEmpty()){ stack2.push(stack1.pop()); } } return stack2.pop(); } }
转载请注明原文地址: https://www.6miu.com/read-4736.html

最新回复(0)