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