棧的應用 字尾運算法則

2022-09-18 21:45:11 字數 1965 閱讀 2034

·對於數字:進棧

·對於符號:

·從棧中彈出右運算元

·從棧中彈出左運算元

·依據符號進行運算

·將運算結果壓入棧中

·遍歷結果:棧中唯一的數字為結果

偽演算法int compute (const char * exp)

建立棧int i = 0;

while (exp[i] != 『\0』)

if(數字)輸出

else if (假設是符號

)int right = 左運算元出棧(此時在棧頂)

int left = 右運算元出棧 (此時棧頂)

int result  = 左運算元與有運算元關於運算子的結果

結果進棧

else

報錯if (棧中僅僅有乙個數字並且遍歷完成

)結果出棧

else

報錯return 返回結果;

**:#include 

#include "linkstack.h"

int isnumber(char c)

return ('0' <= c) && (c <= '9');

int isoperator(char c)

return (c == '+') || (c == '-') || (c == '*') || (c == '/');

int value(char c)

return (c - '0');

int express(int left, int right, char op)

int ret = 0;

switch(op)

case '+':

ret = left + right;

break;

case '-':

ret = left - right;

break;

case '*':

ret = left * right;

break;

case '/':

ret = left / right;

break;

default:

break;

return ret;

int compute(const char* exp)

linkstack* stack = linkstack_create();

int ret = 0;

int i = 0;

while( exp[i] != '\0' )

if( isnumber(exp[i]) )

linkstack_push(stack, (void*)value(exp[i]));

else if( isoperator(exp[i]) )

int right = (int)linkstack_pop(stack);

int left = (int)linkstack_pop(stack);

int result = express(left, right, exp[i]);

linkstack_push(stack, (void*)result);

else

printf("invalid expression!");

break;

i++;

if( (linkstack_size(stack) == 1) && (exp[i] == '\0') )

ret = (int)linkstack_pop(stack);

else 

printf("invalid expression!");

linkstack_destroy(stack);

return ret;

int main()

printf("9 + (3 - 1) * 5 + 8 / 2 = %d\n", compute("931-5*+82/+"));

return 0;

與中綴轉字尾合用。能夠變成計算器的程式

減法公式運算法則 加減法運算法則

專項複習 加減法運算法則 一 整數加減法 1.整數加法計算法則 相同數字對齊,從低位加起,哪一位上的數相加滿十,就向前一位進一。2.整數減法計算法則 相同數字對齊,從低位減起,哪一位上的數不夠減,就從它的前一位退一作十,和本位上的數合併在一起,再減。練習 列豎式計算 214 521 26 97 53...

異或運算法則

1.a a 0 2.a 0 a 3.a b b a 4.a b c a b c a b c 5.d a b c 可以推出 a d b c.6.a b a b.7.若x是二進位制數0101,y是二進位制數1011 則x y 1110 只有在兩個比較的位不同時其結果是1,否則結果為0 即 兩個輸入相同時...

減法公式運算法則 數學加減法運算和運算法則

數學加減法運算和運算法則 一 教學目標 掌握數學的加法及解答一些簡單應用題 了解運算法則,靈活運用一些數字類題目 通過講解引導學生形成模擬思想並調動起興趣 二 教學用具 動物群體 用於加減法和數數強化 對硬體強的需要用 ppt講解展示,對硬體弱的 需要文字表述。準備一些古人計數的方法和故事,如繩結法...