逆波蘭表示式是一種把運算子前置的算術表示式,例如普通的表示式2 + 3的逆波蘭表示法為2 3 +。逆波蘭表示式的優點是運算子之間不必有優先順序關係,也不必用括號改變運算次序,例如(2 + 3) * 4的逆波蘭表示法為*2 3 + 4 *。其中運算子包括+ - * /四個。
並且由於棧具有後進先出的特性,所以用來實現逆波蘭計算器就會十分方便.
#include
#include
#include
# define stack_init_size 20
# define stackincrement 10
# define maxbuffer 10
typedef
double elemtype;
typedef
struct
sqstack;
void
initstack
(sqstack *s)
s->top=s->base;
s->stacksize=stack_init_size;
}void
push
(sqstack *s,elemtype e)}*
(s->top)
=e; s->top++;}
void
pop(sqstack *s,elemtype *e)
*e=*
--(s->top);}
intstacklen
(sqstack s)
intmain()
scanf
("%c"
,&c);if
(c==
' ')
}switch
(c)else
}scanf
("%c"
,&c);}
pop(
&s,&d)
;printf
("\n最終的計算結果為:%f\n"
,d);
return0;
}
C語言棧實現逆波蘭計算器
逆波蘭計算器 輸入所要計算的表示式的逆波蘭式,並進行計算。如 1 2 4 5 其逆波蘭式 1 2 4 5 基礎的東西,還是要多敲 如下 中,輸入的格式如 1 2 4 5 include include include define stack init size 20 define stack in...
單棧實現逆波蘭計算器
標頭檔案 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...
棧之逆波蘭計算器
逆波蘭表示式又叫做字尾。在通常的表示式中,二元運算子總是置於與之相關的兩個運算物件之間,這種表示法也稱為中綴表示。波蘭邏輯學家j.lukasiewicz於1929年提出了另一種表示表示式的方法,按此方法,每一運算子都置於其運算物件之後,故稱為字尾表示。逆波蘭表示式,它的語法規定,表示式必須以逆波蘭表...