剛剛學習c語言的時候我們都寫過計算器,但是當時寫的計算器只能進行一步四則運算,對於一次輸入類似這種(1+2)*3+4的運算則沒有辦法計算。
本篇部落格利用棧這種資料結構實現了支援帶括號的表示式求值計算器。
c語言實現表示式求值的完整**
#include
#include
#include
#include
typedef int elemtype;
#define stack_init_size
100#define stackincrement
10typedef struct sqstack;
void
initstack
(sqstack* s)
s->top = s-
>base;
s->stacksize =
stack_init_size;}
void
push
(sqstack* s, elemtype e)
s->top = s-
>base + s-
>stacksize;
s->stacksize +=
stackincrement;}
*(s-
>top)
= e;
s->top++;}
void
pop(sqstack* s, char* e)
char gettop
(sqstack* s)
return
*(s-
>top -1)
;}int in
(char e)
char precede
(char a, char b)
else
if(a ==
'*'|| a ==
'/')
else
if(a ==
'(')
else
if(a ==
')')
else
if(a ==
'#')
return f;
}char operate
(char a, char theta, char b)
int evaluateexpression()
else}}
return
gettop(&
opnd)-
'0';
}int main()
資料結構第三章學習小結
一 本章內容小結 第三章主要學習了兩種資料結構 棧和佇列,它們是操作受限的線性表。棧只能在棧頂進行插入和刪除,因此先進後出 而佇列則是在隊頭刪除,隊尾插入,先進先出,因此需要根據題目來選取應用哪種資料結構。後面還通過棧來處理遞迴問題,並分析遞迴方法的效率與時間複雜度,最後通過學習三個經典案例 括號匹...
資料結構第三章學習小結
1.這一章學習了兩種新的結構,棧和佇列,棧是後進先出的結構,佇列是先進先出的結構,兩種結構的特點決定了兩種結構使用的場景。下面對棧和佇列的一些基本操作進行展示。一 棧 分為順序棧和鏈棧,這裡是順序棧的一些基本操作 1 include 2 include 3 using namespace std 4...
資料結構 第三章學習小結
1.本章內容小結 本章系統學習了佇列 fifo 和棧 lifo 的的各兩種實現方式以及它的一些應用。本章用鏈式儲存結構和順序儲存結構分別實現了佇列和棧,其中佇列的迴圈鍊錶的產生原因以及解決辦法 也就是使用迴圈鍊錶 讓我知道取模運算子 的作用比我想象的大。2.完成作業或實踐的心得 作業或實踐都是跟第三...