DS之棧實現數制轉換

2021-07-01 20:03:05 字數 1048 閱讀 1086

要想實現對於乙個非負十進位制整數轉換為不大於十進位制的數的方法有很多,其中乙個基於棧的先進後出的固有特性實現的。在進行進製轉換的過程中,由於基於公式:n=(n div d)*d+n mod d(其中:div為整除運算,mod為求餘運算)的計算過程是從低位到高位順序產生所要轉換進製數的各個數字,而輸出的時候是按從高位到低位進行,恰好與計算過程相反。因此,若將計算過程中得到的進製數的各位順序進棧,則按出棧序列輸出即為你所得到的所轉換的進製數。

下面就是利用棧實現進製轉換函式的**

//進製轉換函式

void conversion(int n,int r)

while(!stackempty(s))

sqstack;

//1構造乙個空棧

status initstack(sqstack &s)

s.top=s.base;

s.stacksize=stack_init_size;

return ok;

}//2判斷棧是否為空

status stackempty(sqstack s)

else }

//7出棧

status pop(sqstack &s,selemtype &e)

e=*--s.top;

return ok;

}//8進棧

status push(sqstack &s,selemtype e)

s.base=newbase;

s.top=s.base+s.stacksize;

s.stacksize+=stackincrement;

} *s.top++=e;

return ok;

}//進製轉換函式

void conversion(int n,int r)

while(!stackempty(s))

例如輸入乙個非負的十進位制資料255,要轉換為二進位制數,則輸出的結果為:

DS之棧實現數制轉換 補充

在計算機進製轉換的時候,最常用的就是二進位制,八進位制,十進位制,和十六進製制,以及它們之間的轉換。而在現實生活中最常用的十進位制數是我們一貫的作風。在計算機系統最常用的是二進位制,十六進製制,八進位制。在上一次使用順序棧實現進製轉換的時候,一直在考慮十六進製制的問題,最終也沒有實現,就收手了。過了...

順序棧實現數制轉換

include include define stacksize 100 假定預分配的棧空間最多為100個元素 typedef int datatype 應將順序棧的datatype定義改為整型 typedef struct seqstack void main void initstack seq...

Python棧實現數制轉換

數值轉換的原理是整除取餘,但是計算得出的順序和輸出的順序是相反的 即先算出的結果在最低位,此時就需要使用棧來儲存運算結果 def transform x int a int 輸入要轉換的數字以及目標進製輸出轉換後的字串 param x 要轉換的數字 param a 進製 return 字串 asse...