本周学习大纲
- 数据库
- 数据结构
- 比赛内容
本周学习日历
日历 | 学习内容 | 时长(h) | 备注 |
---|---|---|---|
星期一 | 无 | 0 | |
星期二 | 无 | 0 | |
星期三 | 比赛内容 | 1 | |
星期四 | 比赛内容学习 | 2 | |
星期五 | 数据结构 | 1.5 | |
星期六 | 数据库 | 0.5 | |
星期天 | 数据结构 | 2 |
完成状态:
原本计划的Java多线程没完成。
学习反思
感觉最近放在学习上的时间不多,努力调整一下。
学习笔记
表达式求值
表达式求值是程序设计语言编译中的一个最基本的问题,它的实现也需要运用栈。
这里介绍的算法是由运算符优先级确定运算顺序的对表达式求值算法——算符优先算法
表达式的组成
- 操作数(operand):常量、变量。
- 运算符(operator):算术、关系、逻辑运算符。
- 界限符(delimiter):左右括弧和表达式结束符。
任何一个算术表达式都由操作数、算术运算符和界限符组成。后两者统称为算符 。
- 例:# 3 *(7-2)#,# 3 * 5 + 2#
为了实现表达式求值,需要用到两个栈:
一个是算符栈OPTR,用于寄存运算符。
另一个称为操作数栈OPND,用于寄存运算数和运算结果。
求值的处理过程:自左至右扫描表达式的每一个字符,会得到以下两种情况
- 扫描到操作数:将其压入OPND,
- 扫描到算符:
- 当这个运算符比栈顶运算符的优先级高,则入栈OPTR,继续向后扫描
- 当这个运算符比栈顶运算符的优先级低,则从OPND栈中弹出两个操作数,并从栈OPTR中弹出栈顶运算符,并将运算结构压入栈OPND。
- 继续处理当前字符,直到遇到结束符为止。
代码还在进行中。
下周学习大纲
- 比赛内容
- 数据结构老师布置的题