数据结构实验之栈二:一般算术表达式转换成后缀式

来源:互联网 发布:安卓软件 知乎 编辑:程序博客网 时间:2024/05/21 17:53

Time Limit: 1000MS Memory limit: 65536K

题目描述

对于一个基于二元运算符的算术表达式,转换为对应的后缀式,并输出之。

输入

输入一个算术表达式,以‘#’字符作为结束标志。

输出

输出该表达式转换所得到的后缀式。

示例输入

a*b+(c-d/e)*f#

示例输出

ab*cde/-f*+

提示

 
#include<stdio.h>//#include<string.h>#include<stack>#include<iostream>using namespace std;int main(){    stack<int>q;    char str[100];    int i;scanf("%s",&str);    for(i=0;str[i]!='#';i++)    {        if(str[i]>='a'&&str[i]<='z')            printf("%c",str[i]);        else if(str[i]=='(')                    q.push(str[i]);        else if(str[i]==')')        {            while(q.top()!='(')            {                printf("%c",q.top());                q.pop();            }            q.pop();        }        else if(str[i]=='+'||str[i]=='-')        {            while(!q.empty()&&q.top()!='(')            {                printf("%c",q.top());                q.pop();            }            q.push(str[i]);        }        else if(str[i]=='*'||str[i]=='/')        {            while(!q.empty()&&q.top()!='('&&(q.top()=='*'||q.top()=='/'))            {                printf("%c",q.top());                q.pop();            }            q.push(str[i]);        }    }    while(!q.empty())    {        printf("%c",q.top());        q.pop();    }    printf("\n");    return 0;}

来源

0 0
原创粉丝点击