資料結構 棧的實現之數制轉換

2022-07-23 05:36:12 字數 906 閱讀 3819

常用的進製有四種:二進位制、八進位制、十進位制、十六進製制。他們之間都可以進行倆倆的互相轉換;

有一種轉換方法為餘數法,其轉換思想與棧的儲存正好適應。適用於十進位制轉換為二進位制、八進位制、十六進製制;

餘數法:連續除以基,直到商為0,從低到高紀錄數值為轉換結果。

因為結果是從低到高紀錄的所以使用到棧,先將結果全部入棧之後再全部出棧。

實現函式**(用到之前寫的資料結構-棧的順序表達結構的標頭檔案):

1void

conversion(

inta,

intb)  //引數為從a進製轉換為b進製212

int e = 0

;13 printf("

轉換為%d進製數為:

", b);

14while(!stackempty(scale))

1522 printf("\n"

);23 }

這樣就用棧實現了由十進位制轉換為其他進製的演算法。

接下來我們討論下其他的進製轉換為十進位制的演算法:實現方法可以用按權展開法,想了想。這種方法並沒有什麼好的演算法解決。無非是兩個迴圈巢狀,外迴圈一位位的走,內迴圈將每一位進行求冪。因為並沒有涉及資料結構的思想(我認為這樣寫很麻煩)所以就只是討論討論實現方法,就不丟擲**了。等我想到更好的解決方法後在補上。

好了,現在與十進位制有關的轉換都實現了,還剩下三類:1、二進位制與八進位制;2、二進位制與十六進製制;3、八進位制與十六進製制;

其實這三類都一樣的實現。都先轉換為十進位制在用十進位制餘數法用棧去求。這樣這三類就可以用上面介紹的與十進位制有關的轉換方法實現了;

其實在解決其他進製轉換為十進位製上,如果只是輸出的話完全可以用printf格式化輸出實現。%o八進位制輸出,%x十六機制輸出,%

d十進位制輸出。當是格式化輸出裡沒有對應的二進位制輸出,這點只能寫函式實現。

資料結構實踐 數制轉換 棧

本文是針對資料結構基礎系列網路課程 3 棧和佇列的實現專案。專案 數制轉換 把十進位制的整數轉換為任一進製數輸出。請利用棧設計演算法,並實現程式。參考解答 解法 標頭檔案sqstack.h請見 順序棧演算法庫 使用鏈棧也可以。include include sqstack.h void multib...

資料結構實踐 數制轉換 棧

專案 數制轉換 把十進位制的整數轉換為任一進製數輸出。請利用棧設計演算法,並實現程式。提示 要轉換為r進製,則原來的數逐次除以基數r 除完之後用商再除 直到商為0,得到的一系列餘數的逆序就是轉換結果。這裡的 逆序 意味著後產生的餘數,會先輸出,後進先出,棧的機會來了 參考解答 解法 標頭檔案sqst...

資料結構 棧(附數制轉換練習)

棧的adt adt stack is operations stack createemptystack void 建立乙個空棧 int isempty stack st 判斷棧是否為空棧 void push stack st,datatype x 往棧中插入乙個元素 void pop stack ...