各位大侠能帮帮我的忙???
我现在很急需一个程序,能帮我写一下吗?我要在6月21号就要交这个程序了
程序的题目是:
 将任意的表达式改写为后缀式
说明:1、表达式为算术表达式与逻辑表达式;
      2、为简单起见,表达式中变量为一个大写英文字母。
例如:在机子中输入a+b
      屏幕上显示ab+
我要一个完整的程序,可以直接运行看结果,用C语言写。
程序里面要可以输入算术表达式和逻辑表达式。
如果有哪位帮我写的话,我先谢谢你了, 如果你写的话你能不能把你的程序写点注释的话,我好看你的程序,谢谢了!!!

解决方案 »

  1.   

    给你一个算法描述
    从原表达式求得后缀式的规律为:
    设立操作数栈; 
    设表达式的结束符为“#”,予设运算符栈的栈底为“#” 
    若当前字符是操作数,则直接发送给后缀式; 
    若当前运算符的优先数高于栈顶运算符,则进栈; 
    否则,退出栈顶运算符发送给后缀式; 
    “(”对它之前后的运算符起隔离作用,“)”可视为自相应左括弧开始的表达式的结束符。 
    算法描述如下:
    void transform(char suffix[], char exp[] ) {
    // 从合法的表达式字符串exp求得其相应的后缀式
    InitStack(S); Push(S, '#');
    p = exp; ch = *p;
    while (!StackEmpty(S)) {
    if (!IN(ch, OP)) Pass( Suffix, ch); // 直接发送给后缀式
    else {
    switch (ch) {
    case '(': Push(S, ch); break;
    case ')': {
    Pop(S, c);
    while (c!= '(')
    {Pass( Suffix, c); Pop(S, c) }
    break; }
    defult : {
    while(!Gettop(S, c) && ( precede(c,ch)))
    { Pass( Suffix, c); Pop(S, c); }
    if ( ch!= '#') Push( S, ch); 
    break;
    } // defult
    } // switch
    } // else
    if ( ch!= '#') { p++; ch = *p; }
    } // while
    } // CrtExptree
      

  2.   

    faint!
    数据结构,Very Easy,不给你搞,丫懒得出奇。