美文网首页
中缀表达式(C语言)

中缀表达式(C语言)

作者: 玥玥籽 | 来源:发表于2017-09-26 15:20 被阅读15次

#include#include#define N 100

typedef struct{ //操作数栈

float d[N];

int len; //len相当于top

}stacks,*lists;

typedef struct{ //运算符栈

char c[N];

int len; //len相当于top

}stack,*list;

int init(list p); //stack 初始化

int inits(lists p); //stacks 初始化

int pushs(lists p,float m); // stacks 入栈

int push(list p,char c); //stack 入栈

int pops(lists p,float *m); //stacks 出栈

int pop(list p,char *c); //stack 出栈

int in(char c); //判断C是否为数据 是则返回 1 否则 返回 0

char pre(char s,char c); //判断s c的优先级 s>c return '>'; slen=0;

return 1;

}

int inits(lists p){

if(!p) {

printf("Error,init stacks NULL\n");

return 0;

}

p->len=0;

return 1;

}

int pushs(lists p,float m){

if(!p) {

printf("Error,pushs stacks NULL\n");

return 0;

}

p->d[p->len++]=m; return 1;

}

int push(list p,char c){

if(!p) {

printf("Error,push stack NULL\n");

return 0;

}

p->c[p->len++]=c; return 1;

}

int pops(lists p,float *m){

if(!p) {

printf("Error,push stacks NULL\n");

return 0;

}

*m=p->d[--p->len]; return 1;

}

int pop(list p,char *c){

if(!p) {

printf("Error,push stack NULL\n");

return 0;

}

*c=p->c[--p->len]; return 1;

}

int in(char c){ //判断C是否为数据 是则返回 1 否则 返回 0

if(c>='0'&&c<='9'||c=='.')

return 1;

return 0;

}

char pre(char s,char c){ //判断s c的优先级 s>c return '>'; s 1230

k=p-pr;

pr++;

}

}

for(i=0,tp=10;i':pop(&optr,&t);

pops(&opnd,&b);

pops(&opnd,&a); //输出一个操作符和两个数据

pushs(&opnd,operate(a,t,b));break;

} //运算

}

return opnd.d[opnd.len-1]; //返回表达式的值

}

在命令行中cd入文件夹,用g++加上文件名,注意要加上文件扩展名,这样会生成一个a.exe的可执行文件(Windows默认生成a.exe,Linux默认生成a.out),回车运行即可。

g++ nigixExpression.c ./a.out

相关文章

网友评论

      本文标题:中缀表达式(C语言)

      本文链接:https://www.haomeiwen.com/subject/agbsextx.html