c:棧的簡單算數表示式嚴蔚敏版[新手向]⑤
近段時間本人在複習資料結構,重新敲一次**,有什麼不足的地方望大佬多多指教,嚴蔚敏版教程配套演算法**
教材的**有些問題,本人沒有完全完善所以只能輸入10以內的數字計算
#include
#include
#include
#define stack_init_size
100//初始分配量
#define stackncremrnt
10//分配增量
#define true
1#define false
0#define ok
1#define error
0#define infeasible-1
#define overflow-2
typedef char selemtype;
typedef int status;
//運算子集合
char op[7
]=;//進棧運算符號優先順序
char symbolpriority[8]
[8]=
;typedef struct sqstack;
//構造空棧
status initstack
(sqstack &s)
//清空棧
status clearstack
(sqstack &s)
//摧毀棧
status destroystack
(sqstack &s)
//若棧不空,用e返回s的棧頂元素
selemtype gettop
(sqstack s
)//為棧插入新的棧頂元素e
status push
(sqstack &
s,selemtype e)*s
.top++
=e;returnok;
}//為棧插入一串元素,同時獲取插入的棧元素長度
status pushstack
(sqstack &s)
while
(getchar()
==' ');
printf
("\n成功插入元素\n");
returnok;
}//若棧不空,則刪除棧頂元素,用e返回其值,返回ok,否則返回error
status pop
(sqstack &
s,selemtype e)
//判斷是不是運算子
status in
(char e,char op
)if(flag)
return1;
else
return0;
}//判斷運算子優先權,判斷棧頂運算子和讀入運算子之間的優先順序關係
status precede
(char m,char n)
switch
(n)return symbolpriority[mvalue]
[nvalue];}
//簡單運算函式
status operate
(selemtype a,char theta,selemtype b)
return result;
}//表示式演算法 optr符號棧 opnd數字棧
//op為運算子集合
status evaluateexpression()
else
//switch
printf
("\n************************ %c 運算子棧頂\n"
,gettop
(optr))
;}}//while
return
gettop
(opnd);
}//evaluateexpression
int main()
Dijkstra的雙棧算數表示式求值演算法
說明 這個演算法的輸入要求是必須補全所有括號,否則演算法會出錯,數字和符號之間應該留有乙個空格。import edu.princeton.cs.algs4.stack import edu.princeton.cs.algs4.stdin import edu.princeton.cs.algs4....
中綴算數表示式的求值問題
void convertpostexp char str,char str1 把中綴表示式轉換成字尾表示式,轉換過程需要用到棧,具體過程如下 1 設定乙個堆疊,初始時將棧頂元素置為 2 順序讀入中綴算數表示式,當讀到的單詞為運算元時就將其輸出,並接著讀下乙個單詞 3 當讀到的單詞為運算子時,令x1為...
算數表示式的計算
一 算數表示式的兩種表示 在計算機中進行算數表示式的計算是通過棧來實現的。算數表示式的兩種表示方法 即中綴表示式和字尾表示式。把雙目運算子出現在兩個運算元中間的這種習慣表示叫做算數表示式的中綴表示,這種算數表示式被稱為中綴算數表示式或中綴表示式。就是平常我們習慣的表示方式 例如 2 5 6 中綴表示...