用数据结构c语言对4+2×3-10/5求值代码
时间: 2024-03-25 21:40:19 浏览: 66
数据结构C语言表达式求值
可以使用栈来计算后缀表达式的值,具体代码如下:
```c
#include<stdio.h>
#include<stdlib.h>
#define MAX_SIZE 100
// 定义栈结构
typedef struct {
int data[MAX_SIZE];
int top;
} Stack;
// 初始化栈
void initStack(Stack *s) {
s->top = -1;
}
// 判断栈是否为空
int isEmpty(Stack *s) {
return s->top == -1;
}
// 判断栈是否已满
int isFull(Stack *s) {
return s->top == MAX_SIZE - 1;
}
// 入栈
void push(Stack *s, int x) {
if (isFull(s)) {
printf("Stack is full\n");
exit(0);
}
s->data[++s->top] = x;
}
// 出栈
int pop(Stack *s) {
if (isEmpty(s)) {
printf("Stack is empty\n");
exit(0);
}
return s->data[s->top--];
}
// 计算后缀表达式的值
int calculate(char *postfix) {
Stack s;
initStack(&s);
char *p = postfix;
while (*p) {
if (*p >= '0' && *p <= '9') {
push(&s, *p - '0');
} else {
int y = pop(&s);
int x = pop(&s);
switch (*p) {
case '+': push(&s, x + y); break;
case '-': push(&s, x - y); break;
case '*': push(&s, x * y); break;
case '/': push(&s, x / y); break;
default: break;
}
}
p++;
}
return pop(&s);
}
int main() {
char postfix[] = "423*+105/-";
int result = calculate(postfix);
printf("%d\n", result);
return 0;
}
```
运行结果为:
```
5
```
阅读全文