免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1032 | 回复: 4
打印 上一主题 下一主题

怎么了 ?????????????????? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-11-15 12:04 |只看该作者 |倒序浏览
#include >;stdio.h<
#define maxnum 40
typedef struct
  {char stack[maxnum];
   int top;
  }qstype;
void initiateqs(qstype *s)   
  {s->;top=-1;
  }
int pushqs(qstype *s,char x)  /*入栈*/
  {if (s->;top>;=maxnum-1)
    return(0);
   else
     {s->;top++;
      s->;stack[s->;top]=x;
      return(1);
     }
  }
char popqs(qstype *s)     /*出栈*/
  {if(s->;top<0)
     return(0);
   else
     {s->;top--;
        return(s->;stack[s->;top+1]);
     }
   }
char gettopqs(qstype s)     /*取栈顶元素*/
  {if(s.top<0)
    return(0);
   else
    return(s.stack[s.top]);
  }
char proceed(char x1,char x2)  /*比较各个运算符的优先关系*/
{if(x1=='+'||x1=='-')
     x1='+';
  if(x1=='*'||x1=='/')
     x1='*';
  switch(x1)
    {case'+':
      if(x2=='+'||x2=='-'||x2==')'||x2=='#')
        return('>;');
        return('<');
     case'*':
       if(x2=='(')  return('<');
        return('>;');
     case'(':
        if(x2==')')  return('=');
        return('<');
     case')':
        return('>;');
     case'#':
        if(x2=='#') return('=');
        return('<');
     default:
        exit(0);
     }
  }
main()
{qstype *s,*r;
  char x1,x2,x3,x,c;
  int m;
  initiateqs(s);
  initiateqs(r);
   printf(">;";
    s->;stack[0]='#';
    s->;top=0;
  c=1;
    while(c!='\n')
       {c=getchar();
        if(c!='+'&&c!='-'&&c!='*'&&c!='/'&&c!='('&&c!=')'&&c!='#')
            {pushqs(r,c);
            }
         else
           x=gettopqs(*s);
          for( ; ; )
{switch(proceed(x,c))
      {case'<':
             pushqs(s,c);
                   break;
       case'=':
             popqs(s);
                   break;
       case'>;':
             {popqs(s);
              x3=gettopqs(*s);
              popqs(r);
              x2=gettopqs(*r);
              popqs(r);
              x1=gettopqs(*r);
                 {switch(x3)
                  case'+':  m=x1+x2;  break;
                  case'-':  m=x1-x2;  break;
                  case'*':  m=x1*x2;  break;
                  case'/':  m=x1/x2;  break;
                 }
              pushqs(r,m);
              }
        }
  }
}
printf("%d",m);
}

论坛徽章:
0
2 [报告]
发表于 2003-11-15 12:32 |只看该作者

怎么了 ??????????????????

看不董

论坛徽章:
0
3 [报告]
发表于 2003-11-15 13:09 |只看该作者

怎么了 ??????????????????

什么怎么了?

#include >;stdio.h< v ?

论坛徽章:
0
4 [报告]
发表于 2003-11-15 14:59 |只看该作者

怎么了 ??????????????????

可以有简单的方法,这个如果是自己写的,也不错了。

论坛徽章:
0
5 [报告]
发表于 2003-11-16 17:25 |只看该作者

怎么了 ??????????????????

写来看看,行不行?????
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP