栈:是一种思想,实现将数据以先进后出(FILO)方式操作

  1、模型:#口

  2数据类型:

        //宏:

        #define MAXSIZE  10

        //重命名:将int取一个别名:StackType

        typedef int StackType;

        //栈的类型:

        struct stack

        {

        //数据:

                StackType buf[6];       //栈的元素

        //方法

                short top;              //栈顶下标

        };

  3功能:

    1、初始化InitStack

    2、清空栈:ClearStack

   3、出栈:pop

    4、进栈:push

    5、判断栈为满:IsFull

    6、判断栈为空:IsEmpty

    7、取次栈顶

    8、栈的元素个数:StackLength

栈的应用:撤消与恢复,记忆,递归,“高级功能计算”

   高级功能计算器:

     1.中缀表达式  数据 运算符 数据  

        (优点:直观的去表达一个表达式,缺点:不能直观的去表现优先级)

            eg: 1+(2+3*4)-5

     2、后缀:  数据 数据 运算符  

        (缺点:不能直观表达式一个式子  优点:直观表达式优先级)

          中缀转后缀规则:

            1、从左往右遍历

            2、如果是数据,则成为后缀表达式一部分

            3、是运算则判断与栈顶的优先级:

                1、如果是左括号,则直接进栈

                2、如果是右括号,则一直出栈,直到遇到第一个左括号为止。

                3、如果比栈顶的元素的优先级高,则直接进栈。

                4、如果比栈顶元素的优先级低,则一直出栈,直到遇到比它低运算符为止。

            4、重复1-3步骤,直到表达式遍历完成。

           eg:1 2 3 4 * +  + 5 -

     3、后缀进行计算:

            eg:   1 2 3 4 * + + 5 -

            规则:

                1、从左往右遍历

                2、如果遇到数字则进栈,否则取出栈顶和次栈顶进行运算。运算的结果要进栈

                    (栈顶元素:操作数   次栈顶:被操作数 表达式: 被操作数  运算符  操作数)

                3、重复1-2步骤,直到遍历完成。

 

1、(后期*)宏:是一种替换常量,它不是C语言的标准。是编译器提供的功能。

  作用:是在编译之前(预编译),进行简单的替换。

定义:

    #define  名字  字符串

 

2、重命名:将已知数据类型重新命名    

  typedef  已知类型 别名;

    

    
0、预编译:编译之前,作检查,宏替换等操作。

    gcc -E 源代码 -o 文件.i

1、编译:将代码翻译成为二进制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值