/*{INT,CHAR}指示是整型还是字符型*/Р unionР {Р int num;/*tag=INT时,为整型*/Р char c;/*tag=CHAR时,为字符型*/Р };Р?} TElemType;?Р?/*二叉树的二叉链表存储表示*/Р?typedef struct BiTNodeР {Р TElemType data;Р struct BiTNode *lchild,*rchild; /* 左右孩子指针*/Р }BiTNode,*BiTree;Р二叉树的基本操作已经在构造表达式和表达式中的基本操作中根据不同的功能和实际情况修改了,详细见各个函数操作的算法设计。Р2、顺序栈的存储类型Р/*栈的顺序存储表示*/Р#define STACK_INIT_SIZE 10 /* 存储空间初始分配量*/Р#define STACKINCREMENT 2 /* 存储空间分配增量*/Р/*两个顺序栈*/Рtypedef struct SqStackР?{Р SElemType *base; /* 在栈构造之前和销毁之后,base的值为NULL */Р SElemType *top; /* 栈顶指针*/Р int stacksize; /* 当前已分配的存储空间,以元素为单位*/Р }SqStack; /* 顺序栈SqStack */Рtypedef struct SqStack1Р?{Р SElemType1 *base; /* 在栈构造之前和销毁之后,base的值为NULL */Р SElemType1 *top; /* 栈顶指针*/Р int stacksize; /* 当前已分配的存储空间,以元素为单位*/Р }SqStack1; /* 顺序栈SqStack1 */Р相关的基本操作见上面的“expression.h文件的整体结构”的说明,详细的算法设计见附录的程序清单。