【数据结构

    xiaoxiao2021-03-25  79

    后缀表达式←百度直达;

    后缀表达式转换为中缀表达式←代码示例

    3 6 6 2 / - 3 * +#

    --------------------------------

    12

    #include <stdio.h> #include <stdlib.h> #include <string.h> #include <iostream> using namespace std; typedef struct node { char data[1005]; int top; }Stack; void createStack(Stack *&a) { a=(Stack *)malloc(sizeof(Stack)); a->top=-1; } void push(Stack *&a,int e) { a->top++; a->data[a->top]=e; } int pop(Stack *&a) { int e=a->data[a->top]; a->top--; return e; } void calculate(Stack *&a,char str) { int data1,data2; data1=pop(a); data2=pop(a); switch(str) { case'+':data1+=data2;push(a,data1);break; case'-':data1=data2-data1;push(a,data1);break; case'*':data1*=data2;push(a,data1);break; case'/':if(data1) { data1=data2/data1;push(a,data1);break; } } } int main() { Stack *a; createStack(a); char str; while(cin>>str && str!='#') { if(str==' ') continue; if(str>='0' && str<='9') { int k=str-'0'; push(a,k); } else calculate(a,str); } printf("%d",a->data[0]); return 0; }

    转载请注明原文地址: https://ju.6miu.com/read-36546.html

    最新回复(0)