Skip to content

Latest commit

 

History

History
57 lines (33 loc) · 4.01 KB

stack_queue.md

File metadata and controls

57 lines (33 loc) · 4.01 KB

栈&队列

栈是一种操作所限的线性表,只能在栈顶添加(push)或者删除元素(pop),满足后进先出,先进后出的特性.

栈的底层既可以使用数组来实现,也可以用链表来实现,前者叫顺序栈,后者叫链表栈.

栈的实现

栈的应用:

  • 函数堆栈
  • 栈在表达式求值中的应用
  • 栈在括号匹配中的应用({[]})

队列最大的特点就是先进先出,主要的两个操作是入队和出队。跟栈一样,它既可以用数组来实现,也可以用链表来实现。用数组实现的叫顺序队列,用链表实现的叫链式队列。特别是长得像一个环的循环队列。在数组实现队列的时候,会有数据搬移操作,要想解决数据搬移的问题,我们就需要像环一样的循环队列。

用链表实现的队列时一个无界队列,用数组实现的队列时一个有界队列。对于像线程池队列这种场景,系统的线程资源是有限的,使用有界队列更合理一些。

队列的实现

###如何仅用递归函数和栈操作逆序一个栈(⭐️⭐️)

leetcode

 题号  题目链接             答案链接              难度   完成度 
20 有限的括号 isValid easy
155 最小栈 MinStack easy
32 最长有效括号 longestValidParentheses ✨✨✨
150 逆波兰表达式求值 evalRPN ✨✨
641 设计循环双端队列 MyCircularDeque ✨✨
239 滑动窗口最大值 maxSlidingWindow ✨✨✨

剑指Offer

 题号  题目链接             答案链接              难度   完成度 
-- 剑指Offer(五):用两个栈实现队列 queueByStack