| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 523 人关注过本帖
标题:[求助]这个程序哪里不对劲
取消只看楼主 加入收藏
陈天明
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-1-6
收藏
 问题点数:0 回复次数:0 
[求助]这个程序哪里不对劲

#include <stdio.h>
#define maxnum 40
typedef struct
{
char stack[maxnum];
int top;
}qstype;
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]);
}
int postfix(qstype *S,char a[]) //变中缀表达式为后缀表达式
{
char x1,x2,x;
int j=0;
char proceed();
S->stack[0]='#';
S->top=0;
x2=a[j];
x1=gettopqs(*S);
for(;;)
{
if(x2!='+' && x2!='-'&& x2!='*'&& x2!='/'&& x2!='('&& x2!=')'&& x2!='#')
{
printf("%c",x2); //输出操作符
j++;
x2=a[j]; //取下一个单词
}
else
if(proceed(x1,x2)=='<') //栈顶操作符x1小于读到的操作符x2
{
pushqs(S,x2); //将读到的操作符入栈
x1=gettopqs(*S); //更新x1的值为新入栈的操作符
j++;
x2=a[j]; //取下一个单词
}
else
if(proceed(x1,x2)=='>')
{
x=popqs(S); //退栈
printf("%c",x); //输出原栈顶操作符
}x1=gettopqs(*S); //更新x1的值
else if(proceed(x1,x2)=='='&& x1=='('&& x2==')') //去掉括号
{
popqs(S);
x1=gettopqs(*S);
j++;
x2=a[j];
}
else if(proceed(x1,x2)=='=' && x1=='#' && x2=='#')
return; //处理完毕
}
}
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 ;
int i=0;
char ch,a[maxnum];
int postfix();
printf(">");
while((ch=getchar())!=' ') //以'#'或' '结束
a[i++]=ch;
postfix(s,a);
printf("\n");
}


搜索更多相关主题的帖子: 不对劲 
2007-01-07 12:48
快速回复:[求助]这个程序哪里不对劲
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.111688 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved