SDUTACM 数据结构实验之栈三:后缀式求值

来源:互联网 发布:python数据挖掘 pdf 编辑:程序博客网 时间:2024/04/30 14:43

Problem Description

对于一个基于二元运算符的后缀表示式(基本操作数都是一位正整数),求其代表的算术表达式的值。

Input

输入一个算术表达式的后缀式字符串,以‘#’作为结束标志。

Output

求该后缀式所对应的算术表达式的值,并输出之。

Example Input

59*684/-3*+#

Example Output

57

Hint

基本操作数都是一位正整数!

#include<stdio.h>#include<stdlib.h>#include<string.h>struct hh {int data[10010];int top;};void main(){struct hh *l;    l=(struct hh *)malloc(sizeof(struct hh));l->top=-1;char a[10010];int n,i,x,y;scanf("%s",&a);n=strlen(a);for(i=0;i<n-1;i++){if(a[i]=='+'){x=l->data[l->top];l->top--;y=l->data[l->top];l->data[l->top]=y+x;}else if(a[i]=='-'){x=l->data[l->top];l->top--;y=l->data[l->top];l->data[l->top]=y-x;}else if(a[i]=='*'){            x=l->data[l->top];l->top--;y=l->data[l->top];l->data[l->top]=y*x;}else if(a[i]=='/'){x=l->data[l->top];l->top--;y=l->data[l->top];l->top--;if(x!=0){l->top++;l->data[l->top]=y/x;}else     exit(0);}else{l->top++;l->data[l->top]=a[i]-'0';}}printf("%d\n",l->data[l->top]);}


0 0