栈:是一种思想,实现将数据以先进后出(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、编译:将代码翻译成为二进制
栈栈栈栈