简述企业网站的基本功能,wordpress4.7.4+for+sae,wordpress 无图主题,网站建设网站建设的网络题目地址#xff1a; 232. 用栈实现队列 - 力扣#xff08;LeetCode#xff09; 难度#xff1a;简单 今天刷栈实现队列#xff0c;大家有兴趣可以点上看看题目要求#xff0c;试着做一下。
题目#xff1a; 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支…题目地址 232. 用栈实现队列 - 力扣LeetCode 难度简单 今天刷栈实现队列大家有兴趣可以点上看看题目要求试着做一下。
题目 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作push、pop、peek、empty 实现 MyQueue 类 ·void push(int x) 将元素 x 推到队列的末尾 ·int pop() 从队列的开头移除并返回元素 ·int peek() 返回队列开头的元素 ·boolean empty() 如果队列为空返回 true 否则返回 false 我们直接看题解吧 审题目事例提示 ·代码实现只能在题目给出的方法进行操作 ·这里的输出内容/返回值是调用栈的相关方法时的返回值 解题思路双栈法 根据题意队列的特性是 FIFO先入先出而栈的特性是 FILO先入后出。 知道两者特性之后我们需要用两个栈来模拟队列的特性一个栈为入队栈一个栈为出对栈。 ·当出队栈存在内容时出队栈的栈顶即为第一个出队的元素。 ·若出队栈无元素我们的需求又是出队的话我们就需要将入队栈的内容逆序导入出队栈然后弹出栈顶即可。 代码实现
class MyQueue {DequeInteger inStack; //创建Deque双端队列充当入队栈与出队栈DequeInteger outStack; //注意Deque是一个接口public MyQueue() {inStack new LinkedListInteger(); //在构造方法中创建双向链表集合对象outStack new LinkedListInteger(); //利用Deque接口其中的一个实现类}public void push(int x) { //对入队栈进行压栈操作inStack.push(x);}public int pop() { //对入队栈进行弹出栈操作if (outStack.isEmpty()) { //判出队栈是否为空空则调用in2out()方法in2out();}return outStack.pop();}public int peek() {if (outStack.isEmpty()) { //判出队栈是否为空空则调用in2out()方法in2out();}return outStack.peek();}public boolean empty() { //返回判断值入队栈与出队栈是否均为空return inStack.isEmpty() outStack.isEmpty();}private void in2out() {while (!inStack.isEmpty()) { //若入队栈不为空则进行循环outStack.push(inStack.pop()); //将入队栈内容导入出队栈}}
}
。
代码补充说明 注意哈 Java堆栈Stack类已经过时Java官方推荐使用Deque替代Stack使用。 Deque是一个双端队列接口继承自Queue接口。 · Deque的实现类是LinkedList、ArrayDeque、LinkedBlockingDeque其中LinkedList是最常用的。 ·Deque堆栈操作方法push()、pop()、peek()等。