美文网首页
[AlgoGo]操作受限的线性存储结构

[AlgoGo]操作受限的线性存储结构

作者: 周瑞不是同端 | 来源:发表于2020-09-19 22:48 被阅读0次

操作受限的线性存储结构包括栈和队列。对于操作的限制是为了确保业务场景使用中的安全,确保不会被其他多余操作破坏。

特点:先进后出、后进先出,只在一段插入和删除
实现:顺序栈、链式栈(动态扩容)
应用:函数调用栈、表达式求值、括号匹配、浏览器前进后退

  1. 函数调用栈

操作系统给每个线程分配了一块独立的内存空间,这块内存被组织成“栈”这种结构, 用来存储函数调用时的临时变量。每进入一个函数,就会将临时变量作为一个栈帧入栈,当被调用函数执行完成,返回之后,将这个函数对应的栈帧出栈

  1. 表达式求值

使用两个栈实现,一个栈存储运算数,一个栈存储运算符。
依次读取表达式:
如果是数字存到运算数栈;
如果是运算符,与栈内前一个运算符比较优先级;
如果优先级高,则入栈;
如果优先级低,则取两个运算数进行计算,将结果压栈,再取一个运算符继续比较。
直到表达式结束,并且运算符只剩一个,做最后一次运算,得到结果。

  1. 括号匹配

从左往右匹配括号
如果是左括号则压入栈
如果是右括号则和栈顶的左括号比较
匹配则弹出栈顶元素,不匹配则判定失败
最后检查栈内元素是否为空,为空则匹配成功

  1. 浏览器前进后退

两个栈实现,第一个栈保存历史访问记录,当后退时,从第一个栈弹出记录,压入第二个栈。前进时,从第二个栈弹出记录,压入第一个栈。

队列

特点:先进先出,后进后出
实现:顺序队列,链式队列,循环队列,阻塞队列,并发队列
应用:对于大部分资源有限的场景,没有空闲资源时,都可以利用队列来实现请求排队

相关文章

  • [AlgoGo]操作受限的线性存储结构

    操作受限的线性存储结构包括栈和队列。对于操作的限制是为了确保业务场景使用中的安全,确保不会被其他多余操作破坏。 栈...

  • [AlgoGo]线性存储结构-数组

    定义 数组(Array):一种线性表数据结构,使用连续内存空间存储相同数据类型的一组数据。线性表:线性结构,只有前...

  • [AlgoGo]线性存储结构-链表

    与数组的对比 方面数组链表内存空间连续离散插入删除O(n)O(1)随机访问O(1)O(n) 链表插入、删除操作不需...

  • 队列

    逻辑结构 FIFO 线性结构:受限线性表 基本操作 InitQueue(&Q) QueueEmpty(Q) EnQ...

  • 数据结构与算法 - 线性表

    这里我们只介绍线性表中 存储结构不同的 顺序表 和 链表,以及操作受限的 栈 和 队列 。 数据结构与算法系列文章...

  • 算法学习--栈及栈的应用

    一.简介 概念栈是一种操作受限的线性表只允许从一端插入和删除数据。 存储方式即线性存储和链接存储(链表)。 操作方...

  • 栈和队列

    栈和队列也是一种线性表,只不过它们是一种操作受限的线性表。其存储形式还是可以按照线性表的数据结构来表示(顺序表示:...

  • 数据结构-线性表

    归纳 线性关系、线性表的定义,线性表的基本操作。 线性表的顺序存储结构与链式存储结构(包括单(向)链表、循环链表和...

  • 顺序存储结构的线性表

    线性表的顺序存储结构指的是用一段地址连续的存储单元依次存储线性表的数据元素。 取元素操作 插入操作 删除操作 顺序...

  • 二、栈和队列

    二、栈和队列 栈和队列都是线性结构,它们是操作受限的线性表,即它们的操作是线性表操作的子集。因此也可以用线性表在某...

网友评论

      本文标题:[AlgoGo]操作受限的线性存储结构

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