美文网首页
中缀表达式(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