假设表达式由单字母变量和双目四则运算算符构成。试写一个算法,将一个通常书写形式且书写正确的表达式转换为逆波兰式。
Stack是一个已实现的栈。
可使用的相关类型和函数:
Stack是一个已实现的栈。
可使用的相关类型和函数:
typedef char SElemType; // 栈Stack的元素类型
Status InitStack(Stack &s);
Status Push(Stack &s, SElemType e);
Status Pop(Stack &s, SElemType &e);
Status StackEmpty(Stack s);
SElemType Top(Stack s);
实现函数如下:
char *RPExpression(char *e)
/* 返回表达式e的逆波兰式 */
{
Stack s;
int i,j = 0;
SElemType p;
char *c;
c = (char*)malloc(sizeof(char) * strlen(e));
InitStack(s);
for(i = 0;e[i] != '\0';i++){
if(e[i] >= 'a' && e[i] <= 'z')
c[j++] = e[i];
else{
if(StackEmpty(s))//栈空,进栈
Push(s,e[i]);
else{
switch(e[i]){
case '+' :;