数据结构-栈和队列

栈和队列的定义和特点

  • 栈和队列是限定插入和删除只能在表的“端点”进行的线性表

栈——后进先出

栈的一些经典算法问题
定义:(stack)是一个特殊的线性表,是限定仅在一端(通常是表尾)进行插入和删除操作的线性表。
又称为后进先出(Last In First Out)的线性表,简称LIFO结构。
栈的示意图

栈的相关概念

  • 是仅在表尾进行插入、删除操作的线性表。
    表尾(即an端)称为栈顶Top;表头(即a端)称为栈底Base
    在这里插入图片描述

  • 插入元素到栈顶(即表尾)的操作,称为入栈(push)。
    在这里插入图片描述

  • 栈顶(即表尾)删除最后一个元素的操作,称为出栈(pop)。
    在这里插入图片描述

栈与一般线性表的区别

在这里插入图片描述

栈的表示与实现

栈的抽象数据类型的类型定义

在这里插入图片描述

  1. lnitStack(&S)  初始化操作
    操作结果:构造一个空栈S。
  2. DestroyStack(&S)销毁栈  
    操作初始条件:栈S已存在。
    操作结果:栈S被销毁。
  3. StackEmpty(S)  判定S是否为空栈
    初始条件:栈S已存在。
    操作结果:若栈S为空栈,则返回TRUE,
    否则FALSE。
  4. StackLength(S)  求栈的长度
    初始条件:栈s存在。
    操作结果:返回的元素个数,即栈的长度。
  5. GetTop(S. &e)  取栈顶元素
    初始条件:栈S已存在且非空。
    操作结果:用e返回S的栈顶元素。
  6. ClearStack(&S)  栈置空操作
    初始条件:栈S已存在。
    操作结果:将S清为空栈。
  7. Push(&S, e)   入栈操作
    初始条件:栈S已存在。
    操作结果:插入元素e 为新的栈顶元素。
  8. Pop(&s,&e)   出栈操作
    初始条件:栈S已存在且非空。
    操作结果:删除S的栈顶元素an,并用e返回其值。

队列 ——先进先出

解决排队问题在这里插入图片描述
队列(queue)是一种先进先出(Frist In Frist Out ----FIFO)的线性表。在表—端插入(表尾),在另一端(表头)删除
在这里插入图片描述

相关案例

进制转换

十进制整数N向其它进制数d(二、八、十六)的转换是计算机实现的基本问题
转换法则︰除以d倒取余
该转换法则对应于一个简单算法原理:

n=(n div d) * d + n mod d
其中: div为整除运算,mod为求余运算
  • 例 把十进制数159转成为八进制数
    -在这里插入图片描述

括号匹配的检验

  • 假设表达式中允许包含两种括号:圆括号和方括号
  • 其嵌套的顺序随意,即:
    1.([] ())或〔( [][ ] )]为正确格式;
    2.[ (])为错误格式;
    3.( [ ())或(()])为错误格式。
    例如:检验(()])是否匹配
    在这里插入图片描述

表达式求值

  • 表达式求值是程序设计语言编译中一个最基本的问题,它的实现也需要运用栈。
  • 这里介绍的算法是由运算符优先级确定运算顺序的对表达式求值算法
    ——算符优先算法
  • 表达式的组成
    • 操作数(operand):常数、变量。
    • 运算符(operator):算术运算符、关系运算符和逻辑运算符。
    • 界限符(delimiter):左右括弧和表达式结束符。
  • 任何一个算术表达式都由操作数(常数、变量)、算术运算符(+、-、*、/)和界限符(括号、表达式结束符‘#’、虚设的表达式起始符‘#’)组成。后两者统称为算符。
    • 例如: #3 * ( 7 - 2 ) #

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wooovi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值