Day20——队列和栈专题 女爷i 2024-04-01 11:08 117阅读 0赞 #### 文章目录 #### * * 栈和队列专题 * * 1.用栈实现队列 * 2.用队列实现栈 -------------------- ### 栈和队列专题 ### **栈:先进后出**,是只允许在一端进行插入或删除的线性表。首先栈是一种线性表,但限定这种线性表只能在某一端进行插入和删除操作。 **队列:先进先出**,是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。 #### 1.用栈实现队列 #### **`java`中栈的方法** 判空: empty() 添加元素: push 弹出栈顶元素: pop() 获取栈顶元素: peek() \*\*思路:\*\*队列是先进先出,而栈是先进后出,我们可以通过两个栈来模拟队列。 * 将所有元素放入入栈中 * 将入栈中的所有元素弹出,压入出栈中,此时出栈的出栈顺序即达到了模拟队列的效果(先进先出) **代码实现:** class MyQueue { Stack<Integer> stackIn; Stack<Integer> stackOut; public MyQueue() { stackIn = new Stack<>(); stackOut = new Stack<>(); } public void push(int x) { stackIn.push(x); } public int pop() { dumpstackIn(); return stackOut.pop(); } public int peek() { dumpstackIn(); return stackOut.peek(); } public boolean empty() { return stackIn.isEmpty()&&stackOut.isEmpty(); } private void dumpstackIn(){ if(stackOut.isEmpty()){ while(!stackIn.isEmpty()){ stackOut.push(stackIn.pop()); } } } } #### 2.用队列实现栈 #### **`java`中队列的方法:** 判空: `isEmpty()` 添加元素: offer() 弹出栈顶元素 poll() 获取栈顶元素 peek() **思路**:一个队列在模拟栈弹出元素的时候只要将队列头部的元素(除了最后一个元素外) 重新添加到队列尾部,此时在去弹出元素就是栈的顺序。 **代码实现:** class MyStack { Queue<Integer> queue; public MyStack() { queue = new LinkedList<>(); } //每 offer 一个数(A)进来,都重新排列,把这个数(A)放到队列的队首 public void push(int x) { queue.offer(x); int size = queue.size()-1; //移动除了 A 的其它数 while (size-- > 0) queue.offer(queue.poll()); } public int pop() { return queue.poll(); } public int top() { return queue.peek(); } public boolean empty() { return queue.isEmpty(); } }
相关 Day22——队列和栈专题 文章目录 6.滑动窗口最大值 7. 前 K 个高频元素 -------------------- 6.滑动窗口最大值 思 约定不等于承诺〃/ 2024年04月01日 12:08/ 0 赞/ 153 阅读
相关 Day21——栈和队列专题 文章目录 3.有效的括号 4.删除字符串中的所有相邻重复项 5. 逆波兰表达式求值 ----------- ﹏ヽ暗。殇╰゛Y/ 2024年04月01日 11:53/ 0 赞/ 132 阅读
相关 Day20——队列和栈专题 文章目录 栈和队列专题 1.用栈实现队列 2.用队列实现栈 -------------------- 栈和队列 女爷i/ 2024年04月01日 11:08/ 0 赞/ 118 阅读
相关 栈和队列 20.[\[LeetCode\] Valid Parentheses 验证括号][LeetCode_ Valid Parentheses] 给定一个只包括 `'('`,`') Dear 丶/ 2024年02月19日 13:28/ 0 赞/ 160 阅读
相关 栈和队列 > 栈 是限定 仅在表尾 进行插入和删除操作的线性表 > > 队列 是只允许 在一端 进行 插入 操作、而在 另一端 进行 删除 操作的线性表 第一部分 相关定义 秒速五厘米/ 2023年07月14日 15:57/ 0 赞/ 224 阅读
相关 栈和队列 物理结构与逻辑结构 把物质层面的人体比作数据存储的物理结构,那么精神层面的人格则是数据存储的逻辑结构。逻辑结构是抽象的概念,它依赖于物理结构而存在。 ![在这里插入图 柔光的暖阳◎/ 2023年07月02日 03:24/ 0 赞/ 109 阅读
相关 栈和队列 栈是限定在表尾进行插入或删除的线性表.因此,对于栈来说,表尾端有其特殊的含义,称为`栈顶`,相应地,表头端称为`栈底`.不含任何元素的栈称为空栈. 和线性表类似,栈也 ゝ一纸荒年。/ 2023年07月01日 12:56/ 0 赞/ 75 阅读
相关 栈和队列 栈: package Suan; public class Stack { private int size; 迈不过友情╰/ 2022年06月18日 07:54/ 0 赞/ 277 阅读
相关 数据结构专题( 二)——栈与队列 什么是栈? 其实栈就是一种后进先出的结构,就像一沓书本,每次取书本只能从最上面取,那么压在最底下的书本肯定是最先摆放在桌面上的,自然而然肯定是最后被取走的。 什么是队列? 古城微笑少年丶/ 2022年04月23日 09:06/ 0 赞/ 321 阅读
还没有评论,来说两句吧...