以后程序不长,还是把程序贴上来,要不然大家还得下载,浪费大家的时间总是不好的。
你的代码里栈根本没有初始化就用了,你只定义了个指针,必须有确定的空间才行.
要么new一个,要么把qstyp* s ;改成qstype s ;后面的都加个取址符.
还有你的算法也是有问题的,将中缀转后缀的算法大致如下:
对中缀表达式从左至右依次扫描,由于操作数的顺序保持不变,
当遇到操作数时直接输出;为调整运算顺序,设立一个栈用以
保存操作符,扫描到操作符时,将操作符压入栈中,进栈的原
则是保持栈顶操作符的优先级要高于栈中其他操作符的优先级,
否则,将栈顶操作符依次退栈并输出,直到满足要求为止。如
果遇到“(”进栈,当遇到“)”时,退栈输出直到“)”为止。
还有建议你把函数优先级定义成数字比较好,这样比较直观,让人
帮你改也方便些.