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

来源:互联网 发布:淘宝好的第三方活动 编辑:程序博客网 时间:2024/06/18 03:20

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

Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

题目描述

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

输入

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

输出

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

示例输入

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

示例输出

ab*cde/-f*+
#include<stdio.h>#include<string.h>char a[1000],b[1000],c[1000];void f(){    int p=0;    int q=-1;    int k=0;    while(a[p]!='#')    {        if(a[p]=='(')        {            q++;            b[q]='(';        }        else if(a[p]==')')        {            while(b[q]!='(')            {                c[k]=b[q];                k++;                q--;            }            q--;        }        else if((a[p]=='+'||a[p]=='-')&&(b[q]=='+'||b[q]=='-'||b[q]=='('||q==-1)||a[p]=='*'||a[p]=='/')        {            q++;            b[q]=a[p];        }        else if((a[p]=='+'||a[p]=='-')&&(b[q]=='*'||b[q]=='/'))        {            c[k]=b[q];            q--;            k++;            p--;        }        else        {            c[k]=a[p];            k++;        }        p++;    }    while(q>=0)    {        c[k]=b[q];        q--;        k++;    }    for(int i=0;i<k;i++)        printf("%c",c[i]);}int main(){    while(~scanf("%s",a))    {       f();       printf("\n");    }}

0 0
原创粉丝点击