鏈棧的例項應用

2021-10-05 15:54:34 字數 1055 閱讀 8781

利用棧的基本操作實現將任意乙個十進位制整數轉化為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 如果棧...