利用棧的基本操作實現將任意乙個十進位制整數轉化為r進製整數演算法(r為二至九之間)。
由計算機基礎知識可知,把乙個十進位制整數x轉換為任一種r進製數得到的是乙個r進製的整數,假定為y,轉換方法是逐次除基數r取餘法。具體做法是:首先用十進位制整數x除以基數r,得到的整餘數是r進製數y的最低位y0,接著以x除以r的整數商作為被除數,用它除以r得到的整餘數是y的次最低位y1,依次類推,直到商為0時得到的整餘數是y的最高位ym,假定y共有m+1位。這樣得到的y與x等值,y的按權展開式為:
y=y0+y1.r+y2.r2+…+ym.rm
假定乙個十進位制整數為3425,則把它轉換為八進位制數的過程如圖5-3所示。
圖 十進位制整數3425轉換為八進位制數6541的過程
最後得到的八進位制數為(6541)8,對應的十進位制數為6×83+5×82+4×8+1=3425,即為被轉換的十進位制數,證明轉換過程是正確的。
從十進位制整數轉換為r進製數的過程中,由低到高依次得到r進製數中的每一位數字,而輸出時又需要由高到低依次輸出每一位。所以此問題適合利用棧來解決
初始化棧、判棧為空、出棧、入棧、釋放結點等運算。
改善以上程式,使程式能夠無限次進行數制轉換直到使用者要求退出,例如:「進行進製轉換請按1,退出請按0」當使用者輸入0時,程式才退出。
部分**:
//鏈棧結點結構
typedef
struct lsnodelsnode,
*lstack;
//初始化
status initlsn
(lstack &l)
//判斷棧是否為空
status notnull
(lstack l)
//入棧
status pop_lsn
(lstack &l,elemtype e)
//出棧
status push_lsn
(lstack &l,elemtype e)
鏈棧的實際應用(總結)
1 表示式求值在計算機中進行算術表示式的計算是通過棧來實現的。1 算術表示式的三種表示 中綴 雙目運算子出現在兩個運算元中間,例 a b 字首 雙目運算子出現在兩個運算元前面,例 ab 字尾 雙目運算子出現在兩個運算元後面,例 ab 2 三種表示式之間的轉換 按運算的優先次序全部加上括號,逐個括號寫...
Python實現棧,及棧的應用例項
棧 stack 是限定在表尾進行插入或刪除操作的線性表。因此,對於棧來說,表尾端有其特殊含義,稱為棧頂 top 表頭被稱為棧底 bottom 構造空棧 def init self,size self.size size self.stack 輸出棧 def str self return str s...
七 棧的應用例項(一)
1 提出問題 在c語言中有一些符號是成對匹配出現的 括號 引號 檢查它們是否成對出現是所有編譯器實現的基本功能,可用於基本的語法檢查,這個問題就可通過棧來實現!2 演算法實現思路 3 演算法具體實現 掃瞄字串中的符號是否匹配 bool scanner const char code else 如果棧...