美文网首页
算法基础——栈与队列

算法基础——栈与队列

作者: 雷小雷LL | 来源:发表于2020-02-24 09:59 被阅读0次

一、栈 (Stack)

定义:栈是限定在表尾进行插入和删除操作的线性表。

  • 栈的插入操作,叫作进栈,也叫压栈、入栈。
  • 栈的删除操作,叫作出栈,也叫弹栈。
  • 后出先进的方式处理集合
1.常用API:
  • Count : 返回元素个数;
  • Push() : 入栈的方法;
  • Pop() : 出栈的方法,并在该队列中删除该元素;
    如果在调用Dequeue()方法时,队列中没有元素,就会抛出异常
  • Peek() : 读取一个元素,但不删除它。
2.栈的应用——递归
  • 斐波那契数列——兔子繁殖问题
    数学函数定义:
  • 递归定义——把一个直接调用自己或通过一系列调用语句间接调用自己的函数,称作递归函数。
3.栈的应用——四则运算表达式求值
  • 后缀(逆波兰)表示法定义——一种不需要括号的后缀表达法
    例:9+(3-1)×3+10÷2,后缀表达:9 3 1 - 3 * + 10 2 / +
    (1) 初始化一个空栈;
    (2) 后缀表达式,前三个都是数字,9、3、1进栈;


(3) 第四个是 - ,1作为减数,3作为被减数,运算3-1 = 2 ,将2进栈;
(4) 接着是数字 3 进栈;


(5) 后面是 * ,意味着3,2出栈并相乘,得到6进栈;
(6) 接着是 + ,6、9出栈相加,得到15,15进栈;

(7) 接着是10、2进栈;
(8) 后面是 / ,10、2出栈相除,得到5并进栈;

(9)最后是 + ,15,5出栈相加,得到20;

  • 中缀表达式转后缀——标准的四则运算表达式即为中缀表达式
    例如:9+(3-1)×3+10÷2转化为后缀表达式 9 3 1 - 3 * + 10 2 / +
    (1) 初始化一个空栈;

(2) 第一个字符是9,输出9,后面是符号 +,进栈;
(3) 第三个是( ,是左括号,未配对,进栈;
(4) 第四个字符是 3,输出,总表达式为9 3,接着是 -,进栈;


(5) 接下来是 1,输出,总表达式为9 3 1 ,后面符号是 )。此时需要去匹配此前的 ( ,所以栈顶依次出栈,并输出,直到( 出栈为止;输出表达式为 9 3 1 - ;
(6) 接着是数字3,输出,总表达式为9 3 1 - 3;紧接着是 × ,因为此时栈顶符号为 + ,优先级低于 ×,所以不输出;*进栈;

(7) 之后是符号 +,此时当前栈顶元素 * 比这个 + 的优先级高,因此栈中元素出栈并输出,总表达式为 9 3 1 - 3 * + 。然后将当符号 + 进栈,

二、队列 (Queue)

定义:只允许在一段进行插入操作,另一端进行删除操作的线性表。

  • 队列是一种先进先出的线性表。
  • 允许插入的一端叫做队尾,允许删除的一端叫做队头。
1.常用API
  • Count : 返回队列中的元素个数;
  • Enqueue() : 在队列的尾端添加一个元素;
  • Dequeue() : 在队列的头部添加一个元素,并在该队列中删除该元素;
    如果在调用Dequeue()方法时,队列中没有元素,就会抛出一个异常;
  • Peek() : 在队列头部读取一个元素,但不删除它。
2.循环队列
  • 队列顺序存储结构。
  • 循环队列定义——把队列头尾相接的顺序存储结构称为循环队列。

相关文章

  • 算法基础——栈与队列

    一、栈 (Stack) 定义:栈是限定在表尾进行插入和删除操作的线性表。 栈的插入操作,叫作进栈,也叫压栈、入栈。...

  • 算法学习笔记-基础开篇

    算法定义 基础问题 三种基础的抽象数据类型:背包、队列、栈 用数组、变长数组、链表实现背包、队列、栈的api。 数...

  • 算法基础篇-栈与队列

    在我们的日常工作中,前端不可避免的要与算法打交道,可能很多人都会有疑问,那就是我们真的用到了算法了吗?其实仔细相信...

  • 算法-栈和队列算法总结

    栈和队列算法总结 1 模拟 1.1 使用栈实现队列 1.2 使用队列实现栈 2 栈的应用 2.1 栈操作 2.2 ...

  • 数据结构——栈和队列

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

  • 排序算法

    什么是算法 书籍推荐 《数据结构与算法分析》 表、栈和队列 树 散列(hash) 优先队列(堆) 排序 定义 问题...

  • 数据结构与算法学习开篇

    数据结构与算法知识图谱 20个最常用的、最基础数据结构与算法 10个数据结构:数组、链表、栈、队列、散列表、二叉树...

  • 队列之-队列实现栈

    一、队列实现栈核心算法概述 之前已经描述过了用栈实现队列的功能,见栈系列之-实现队列,那么同样队列也可以用来实现栈...

  • 集合相关数据结构与算法

    队列 栈数据结构 比较算法 Collections Collection与Collections的区别?Colle...

  • 数据结构与算法目录

    操作系统目录 哈希树遍历链表数组排序堆与栈队列高级算法

网友评论

      本文标题:算法基础——栈与队列

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