zoukankan      html  css  js  c++  java
  • 数据结构实验之栈二:一般算术表达式转换成后缀式

     

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

    Time Limit: 1000MS Memory limit: 65536K

    题目描述

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

    输入

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

    输出

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

    示例输入

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

    示例输出

    ab*cde/-f*+
     1 #include<iostream>
     2 #include<stdlib.h>
     3 #include<string.h>
     4 using namespace std;
     5 char zhan[100];
     6 int top=-1;
     7 int cmp(char ch)
     8 {
     9     if(ch=='+'||ch=='-')return 1;
    10     if(ch=='*'||ch=='/')return 2;
    11     if(ch=='(')return 3;
    12 }
    13 void ruzhan(char ch)
    14 {
    15     zhan[++top]=ch;
    16 }
    17 int main()
    18 {
    19     char f[100];
    20     cin>>f;
    21     //while(cin>>f)
    22     {
    23         char bds[100];
    24         int t=-1;
    25         int i;
    26         for(i=0; f[i]!='#'; i++)
    27         {
    28             if((f[i]>='0'&&f[i]<='9')||(f[i]>='a'&&f[i]<='z'))
    29                 bds[++t]=f[i];
    30             else
    31             {
    32                 if(f[i]=='(')
    33                     ruzhan(f[i]);
    34                 else if(f[i]==')')
    35                 {
    36                     for(; zhan[top]!='('; top--)
    37                         bds[++t]=zhan[top];
    38                     top--;
    39                 }
    40                 else
    41                 {
    42                     if(cmp(zhan[top])<cmp(f[i]))
    43                     ruzhan(f[i]);
    44                     else
    45                     {
    46                         while((cmp(zhan[top])>=cmp(f[i]))&&zhan[top]!='(')
    47                         {
    48                             bds[++t]=zhan[top];
    49                             top--;
    50                         }
    51                         ruzhan(f[i]);
    52                     }
    53                 }
    54             }
    55         }
    56         //cout<<top<<zhan[top]<<endl;
    57         for(;top>=0;top--)
    58         bds[++t]=zhan[top];
    59         int j;
    60         for(j=0;j<=t;j++)
    61         cout<<bds[j];
    62         cout<<endl;
    63     }
    64     return 0;
    65 }
    66 //a*(b*(c+d/e)-f)#
    View Code
    
    
    
     
     
     
     
  • 相关阅读:
    JavaScript
    格式与布局
    表单和样式表
    HTML中表格的使用
    HTML 基础
    foreach使用和函数
    20160423 二维数组,锯齿数组和集合
    【学习笔记】系统集成项目管理
    BSEG和BSIS、BSAS、BSID、BSAD、BSIK、BSAK六个表的关系(转)
    关于ABAP事件的一张图
  • 原文地址:https://www.cnblogs.com/kuangdaoyizhimei/p/3223223.html
Copyright © 2011-2022 走看看