栈与队列

作者: iOS小洁 | 来源:发表于2023-01-31 20:46 被阅读0次

栈是一种特殊的线性表,只能在一端进行操作

往栈中添加元素的操作,一般叫做 push,入栈

从栈中移除元素的操作,一般叫做 pop,出栈(只能移除栈顶元素,也叫做:弹出栈顶元素)

后进先出的原则,Last In First Out,LIFO

栈接口设计

int size(); // 元素的数量 
boolean isEmpty(); // 是否为空 
void push(E element); // 入栈 
E pop(); // 出栈 E 
top(); // 获取栈顶元素 
void clear(); // 清空

栈的应用:

  • 浏览器
  • 剪切板

栈练习:

20. 有效的括号

856. 括号的分数

150. 逆波兰表达式求值

224. 基本计算器

队列

队列是一种特殊的线性表,只能在头尾两端进行操作

队尾(rear):只能从队尾添加元素,一般叫做 enQueue,入队

队头(front):只能从队头移除元素,一般叫做 deQueue,出队

先进先出的原则,First In First Out,FIFO

队列的实现优先使用双向链表,因为队列主要是往头尾操作元素

队列接口设计

int size(); // 元素的数量 
boolean isEmpty(); // 是否为空 
void clear(); // 清空 
void enQueue(E element); // 入队 
E deQueue(); // 出队 
E front(); // 获取队列的头元素

双端队列

双端队列是能在头尾两端添加、删除的队列

相对普通队列变更

void enQueueRear(E element); // 从队尾入队
E deQueueFront(); // 从队头出队 
void enQueueFront(E element); // 从队头入队 
E deQueueRear(); // 从队尾出队 
E front(); // 获取队列的头元素 
E rear(); // 获取队列的尾元素

循环队列

使用动态数组实现,并且各项接口也可以优化到 O(1) 的时间复杂度 。这个用数组实现并且优化之后的队列也叫做:循环队列

循环双端队列

可以进行两端添加、删除操作的循环队列

队列练习

232. 用栈实现队列

225. 用队列实现栈

相关文章

  • Swift 队列&栈 相关操作

    栈 LIFO(后进先出) 队列 FIFO(先进先出) 队列与栈相互的实现 栈 - 队列实现 队列 - 栈实现 相关...

  • 数据结构学习 | 队列和栈

    栈 后进先出 栈顶允许插入(压栈)、删除(弹栈) 应用:数制转换数制转换与栈 队列 先进先出 队列头部允许删除,队...

  • Algorithm小白入门 -- 队列和栈

    队列和栈队列实现栈、栈实现队列单调栈单调队列运用栈去重 1. 队列实现栈、栈实现队列 队列是一种先进先出的数据结构...

  • 常见数据结构

    栈、队列、数组、链表、树、哈希表 栈 与 队列 首先我们需要了解【栈】与【列队】的区别,它们的最大区别就是数据进出...

  • 栈和队列

    用栈定义队列(出入栈) 用队列定义栈(数据队列和辅助队列)

  • LeetCode刷题笔记(三)栈与队列

    三. 栈与队列 python中的栈直接用list实现,队列用deque,需要导入外部包。 155. 最小栈 题目:...

  • 实 验 四 栈和队列

    一、实验目的与要求:## 1、理解栈和队列抽象数据类型。 2、掌握栈和队列的存储结构和操作实现。 3、理解栈和队列...

  • 数据结构的各种代码

    第 02 章 线性表 顺序存储结构 链式存储结构 第 03 章 栈与队列 顺序栈 链栈 两栈共享空间 循环队列 链...

  • 数据结构——栈和队列

    用数组实现栈和队列 用栈实现队列 用队列实现栈 栈和队列的经典算法题最小间距栈宠物收养所 数组实现栈和队列 用数组...

  • 2019-05-12(高数二轮概念梳理与408一轮同时进行)

    今日复习:极限、连续 与栈、队列

网友评论

    本文标题:栈与队列

    本文链接:https://www.haomeiwen.com/subject/hpybhdtx.html