又稱字尾計數器
用棧把原式寫為逆波蘭式子,儲存在陣列裡面並列印。
用棧根據逆波蘭式子的形式計算出結果。
以下**:
#include#include#include#define initsize 20
#define increase 5
typedef struct stack stack;
void initstack(stack*s)
void push(stack*s, char c)
*(s->top++) = c;
}void pop(stack*s, char*e)
int getlen(stack*s)
void clearstack(stack*s)
//實現逆波蘭計數器(字尾計數器)
char b[100] = ;
typedef struct stack2 stack2;
int nibolan(stack*s, char*a)
} else if (a[i] == '+' || a[i] == '-')
push(s, a[i]);
}} else if (a[i] == '*' || a[i] == '/' || a[i] == '(')
else return 0;
i++;
} while (s->top!=s->base)
return 1;
}double result(stack2 s)
e = atof(num);
s.base[++s.top] = e;//進行入棧
} if (s.top > 0)
s.top--;
break;
default:
break;
}} i++;
} return s.base[s.top];
}int main() ,-1
};//對s2賦予初值
char a[100] = ;
printf("請輸入乙個算式:");
scanf("%s", a);
int iscorrect = nibolan(&s, a);
if (iscorrect)
else printf("輸入的算式有誤!\n");
printf("最後結果為:%.2lf\n", result(s2));
return 0;
}
逆波蘭式 棧實現
因為做二叉樹非遞迴的前後中遍歷,用到棧的方法。xpp說那就乾脆把四則運算,逆波蘭式 棧的實現做了。這是參考別人的程式寫的,注釋比較亂。而且這個是直接實現計算機計算的四則運算,沒有將逆波蘭的表示式列印出來。今天腰太酸了,明天改一改,把逆波蘭式列印出來噻333333.棧還有迷宮演算法是不是?現在腦子裡之...
單棧實現逆波蘭計算器
標頭檔案 define crt secure no warnings include include include include define error 0 define ok 1 define yes 1 define no 0 typedef int status typedef stru...
利用棧實現逆波蘭演算法
1.逆波蘭表示式?在我們的普遍認知中,計算的優先順序總是和 相關,形如 1 2 3 4 這樣的式子,我們看起來十分的清晰明了,但對計算機來說,它會進行很多次的判斷來確定乙個運算的優先順序。於是在很久很久之前就有乙個人發現,如果我們將上述算式寫成形如1 2 3 4 的形式,計算機判斷起來會顯得格外的快...