栈表达式运算代码用c语言编写
时间: 2023-06-08 21:06:14 浏览: 114
好的,我可以回答关于栈表达式运算代码用C语言编写的问题。
栈表达式运算是一种常见的数学计算方法,它可以使用栈数据结构来实现。在C语言中,我们可以使用结构体来表示栈,并使用push和pop等操作来实现栈的功能。
下面是一个简单的栈表达式运算代码的示例,使用C语言编写:
```
#include<stdio.h>
#include<stdlib.h>
#define MAX_SIZE 100
// 定义一个栈的结构体
typedef struct {
int data[MAX_SIZE];
int top;
} Stack;
// 将元素压入栈中
void push(Stack* s, int x) {
if(s->top == MAX_SIZE - 1) {
printf("Stack overflow\n");
exit(1);
}
s->data[++(s->top)] = x;
}
// 弹出栈顶元素
int pop(Stack* s) {
if(s->top == -1) {
printf("Stack underflow\n");
exit(1);
}
return s->data[(s->top)--];
}
// 判断一个字符是否为操作符
int isOperator(char x) {
return x=='+' || x=='-' || x=='*' || x=='/';
}
// 对表达式进行求值
int evaluate(char* postfix) {
Stack s = {-1};
for(int i=0; postfix[i]!='\0'; i++) {
if(isOperator(postfix[i])) {
int x = pop(&s), y = pop(&s);
switch(postfix[i]) {
case '+': push(&s, y+x); break;
case '-': push(&s, y-x); break;
case '*': push(&s, y*x); break;
case '/': push(&s, y/x); break;
}
} else if('0'<=postfix[i] && postfix[i]<='9') {
int num = 0;
while('0'<=postfix[i] && postfix[i]<='9') {
num = num*10 + (int)(postfix[i]-'0');
i++;
}
i--;
push(&s, num);
}
}
return pop(&s);
}
int main() {
char postfix[MAX_SIZE];
printf("请输入后缀表达式:");
scanf("%s", postfix);
printf("表达式的值为:%d\n", evaluate(postfix));
return 0;
}
```
希望这个代码可以帮助回答您的问题。如果您还有其他问题或需要进一步的解释,请随时告诉我。
阅读全文