#include<stdio.h>
#include<stdlib.h>
typedef struct node{
int data[1000];
int d;
}*Q;
typedef struct nodes{
char next[1000];
int n;
}*T;
Q csh(){
Q sz = (Q)malloc(sizeof(struct node));
sz->d = -1;
return sz;
}
T cshs(){
T ysf = (T)malloc(sizeof(struct nodes));
ysf->n = -1;
return ysf;
}
void sr(Q sz,T ysf){
int n;
scanf("%d",&n);
for(int i=0;i<n;i++){
sz->d = sz->d +1;
scanf("%d",&sz->data[i]);
}
getchar();
for(int i=0;i<n-1;i++){
ysf->n = ysf->n +1;
scanf("%c",&ysf->next[i]);
getchar();
}
}
void ys(Q sz,T ysf){
int x,y;
if(sz->d != 0){
y = sz->data[sz->d--];
x = sz->data[sz->d--];
if(y == 0&&ysf->next[ysf->n] == '/'){
printf("ERROR: %d/0",x);
return;
}
switch(ysf->next[ysf->n--]){
case '*':
sz->data[++sz->d] = x*y;
ys(sz,ysf);
break;
case '/':
sz->data[++sz->d] = x/y;
ys(sz,ysf);
break;
case '+':
sz->data[++sz->d] = x+y;
ys(sz,ysf);
break;
case '-':
sz->data[++sz->d] = x-y;
ys(sz,ysf);
break;
}
}else{
printf("%d",sz->data[sz->d]);
}
}
int main(){
Q sz = csh();
T ysf = cshs();
sr(sz,ysf);
ys(sz,ysf);
}
7-1 简单计算器 堆栈实现
最新推荐文章于 2024-06-22 21:31:17 发布