
题目要求使用前缀表达式算结果 但是我只能算出来第一个 第二个好像是因为有一个两位数然后没法这样遍历 想问一下有什么修改方法吗
int pre(char* prefix) {
Stack* stack = (Stack*)malloc(sizeof(Stack));
char y = '0';
char* x = &y;
int len = strlen(prefix);
CreateStack(stack, len-1);
int result=0;
printf("length is %d\n", len);
//printf("%c", prefix[0]);
for (int i = len - 1; i >= 0; i = i - 2) {
if (prefix[i] >= '0' && prefix[i] <= '9') {
Push2(stack, int(prefix[i]) - 48);
//printf("put %c in succesfully\n", prefix[i] );
}
else if (prefix[i] == '+') {
int a = stack->values[stack->top];
int b = stack->values[--stack->top];
result = a + b;
Pop(stack, x);
Push2(stack, result);
}
else if (prefix[i] == '-') {
int a = stack->values[stack->top];
int b = stack->values[--stack->top];
result = a - b;
Pop(stack, x);
Push2(stack, result);
}
else if (prefix[i] == '*') {
int a = stack->values[stack->top];
int b = stack->values[--stack->top];
result = a * b;
Pop(stack, x);
Push2(stack, result);
}
else if (prefix[i] == '/') {
int a = stack->values[stack->top];
int b = stack->values[--stack->top];
result = a / b;
Pop(stack, x);
Push2(stack, result);
}
}
return result;
}