1、表达式:=操作数+
2、Exp = s1 + o1 + s2
3、如何构建语法树?如何求后缀表达式?如何求前缀表达式?如何求中缀表达式?
4、如何前缀表达式?如果从左到右,就需要多次扫描,,或者根据语法树转换成后缀表达式。
需要运算多少次?有多少个运算符就扫描多少遍
5、操作数之间的相对次序会改变吗?操作数的相对次序不变
6、后缀、前缀:求最小表达式,什么是最小表达式
7、如何求这些表达式?算法优先级算法
1、简述算法优先级算法?
首先判断类型,如果是操作数,就入操作数栈。如果是操作数栈,需要分两种情况,如果op(当前)> op(栈顶),那么就入栈,否则就弹出栈顶符号栈一个元素,弹出两个操作数栈内的元素进行反复计算,并将计算的结果入栈,直到满足op(当前)> op(栈顶)。如果是‘(’,直接入栈,如果是')',不入栈,并进行弹出符号栈进行计算,一直到满足当前栈元素是'(',就停止,并弹出'(';前面的步骤反复计算,一直到满足操作数栈为空或者只剩下结束符。
2、算法优先级算法需要什么数据结构?
操作数栈、符号栈
#队列
1、什么是队列?只允许一端进行插入,另一端进行删除的线性表。什么是队尾?什么是对头?只允许插入的叫做队尾(rear),只允许删除的叫队头(front).
2、队列有什么性质?FIFO
3、队列的应用?输入输出缓冲区。操作系统的作业排队。
4、队列类型定义是什么?数据关系如何描述?<a[i - 1], a[i]> a[i - 1] 为队头,a[i]为队尾。
5、链队列?为什么要加一个指针指向最后一个元素?地址随机的单元存储结构的队列
6、
7、为什么要让对头指针指向head?尾指针指向哪里?
8、如何入队?如何出队?需要修改哪些量?
9、如果删除最后一个元素的时候,队尾指针需要修改吗?
10、什么是顺序队列?使用顺序存储结构的队列叫做顺序队列。地址连续的地址单元
11、空间大小能够用头指针和尾指针算吗?
12、如何实现?用一个一维数组来作为顺序存储空间,再设两个指示器,front,rear。约定front = rear,队列为空。队尾指针始终指向最后一个元素的后一个位置。
13、这样会带来一个问题,当对头指针向前移动的时候,前面会多出一个些闲置空间,如何充分利用空间呢(假溢出)?1、每删除一个元素的时候,元素依次向队头移动一个位置,这样效率很慢。2、把对垒看成循环队列。
14、如何实现循环队列?
15、在循环队列的时候,会出现二义性,如何判满?如何判空?1、浪费一个空间2、用一个标志变量s