• 栈的相关知识


    课程作业五

    GitHub链接

    栈(Stack)

    堆栈(Stack)是一组相同数据类型的数据的集合,并拥有后进先出(last in first out)的特性,所有的操作都在栈顶进行。
    栈堆应用广泛,包括递归的调用和返回、二叉树和森林的遍历操作、调用子程序和从子程序返回、计算表达式的转换和求值、中央处理单元(CPU)的终端处理(interrupt handling)以及所谓的堆栈计算机(stack computer)等等。

    栈堆的基本操作

    |CREAT| 创建一个空栈 |
    |PUSH |把数据存入堆栈顶端,并返回新堆栈|
    |POP |从栈堆顶端弹出数据,并返回新堆栈|
    |EMPTY|判断堆栈是否为空栈,是返回true,不是返回false|
    |FULL |判断堆栈是否已满,是返回true,不是返回false|

    栈的实现方法

    1.用数组实现堆栈
    2.用链表实现堆栈
    3.用容器适配器(#include < stack > )

    #include< stack>

    stack< Type> s

    (建立一个类型为Type型的堆栈)
    stack 模板类需要两个模板参数,一个是元素类型,一个容器类型,但只有元素类型是必要
    的,在不指定容器类型时,默认的容器类型为deque。

    s.push(x)

    在栈顶压入新元素 x

    s.pop()

    从栈堆顶端弹出数据,并返回新堆栈

    s.top()

    返回栈顶的元素

    s.empyt()

    判断堆栈是否为空栈,是返回true,不是返回false

    s.size()

    返回栈中元素个数

    *s.swap(stack<Type>w) * (C++11)

    将s与w进行交换

    s.emplace(x) (c++11)

    额...(Construct and insert element)
    不知道和push()什么区别...两个感觉效果是一样的...
    肯定是有区别的啊..不然还要这个干嘛 →_→

    中缀表达式转换成后缀表达式

    1. 从左往右读进中缀表达式的每个字符
    2. 如果读进的是操作数,则直接输出到后缀表达式中
    3. 如果遇到")",则弹出堆栈内的运算符,直到弹出到一个"("两者互相抵消
    4. "("的优先级在堆栈内比任何运算符都小,任何运算符的优先级都可压过它,但是在栈堆外却是优先级最高的
    5. 当运算符准备进入堆栈时,必须和堆栈顶端的运算符比较,如果外面的运算符优先级高于堆栈顶端的运算符优先级则压入栈堆,如果优先级低于或等于堆栈顶端的运算符就把堆栈的运算符弹出,直到堆栈顶端的运算符优先级低于外面的运算符或堆栈为空时,就把外面这个运算符压入堆栈
    6. 中缀表达式读完后,如果运算符堆栈不为空,则将其内的运算符逐一弹出,输出外面的后缀表达式即可
  • 相关阅读:
    Android:UI界面设计基础知识总结(一)
    Test:河北金力集团企业网集成
    Java中的异常处理try catch(第八周课堂示例总结)
    Java第七周课堂示例总结
    初入JavaWeb(半成品)
    Redis详解(4)--redis底层数据结构
    Go语言流程控制05--defer延时执行
    java==IO练习,文件切割合拼工具开发代码
    【洛谷 P3772】[CTSC2017]游戏(矩阵乘法+线段树)
    【LOJ #2865】「IOI2018」狼人(Kruscal重构树+扫描线)
  • 原文地址:https://www.cnblogs.com/darkexisted/p/6893370.html
Copyright © 2020-2023  润新知