再一次想请教:在c语言版数据结构中,怎样将 中序表达式 转换成 前序表达式 呢?(看完回贴还是不太明!)
有位高手是这样回的:
为什么一个问题被很多次重复的提问呢?唉~~~~~~~~~
假设表达式中只有双目运算符
设置3个栈:运算符栈、操作数栈、结果栈(存放最后结果)
for(表达式第一个字符;该字符不是结束符;下一个字符)
{if(该字符是操作数)进操作数栈;
else if(该字符是运算符)
{if(运算符栈为空)进运算符栈;
else if(结果栈空){该运算符进结果栈;弹出操作数栈顶2个元素进结果栈;}
else if(优先级小于运算符栈顶运算符)
{while(运算符栈不空且优先级小于运算符栈顶)
{弹出运算符栈顶元素进结果栈;弹出操作数栈顶2个元素进结果栈;}
该运算符进运算符栈;
}
else { 弹出操作数栈顶1个元素进结果栈底;该运算符压入结果栈底;}
}
}
但我看完后自已试了一下,总觉得有点问题(或者是我搞不懂吧!)。
如果有那位知道而又想指教一下愚弟的,请回贴,先谢了!!!
推荐阅读
把你的程序贴出来。
一句一句的往下对,就会发现问题的


讨论区