資料結構6 棧的應用(十進位制轉化為二進位制)

2021-10-23 13:06:43 字數 1803 閱讀 9632

十進位制轉化為二進位制,採用的是「除以2求餘數」的演算法,就是將整數不斷除以2,每次得到的餘數就是由低到高的二進位制

這個「除以2」的過程得到的餘數是從低到高的次序,而輸出則是從高到低,所以需要乙個棧來反轉次序。

十進位制轉化為二進位制**實現:

class stack():

"""定義乙個棧"""

def __init__(self):

self.items =

def isempty(self):

return self.items() ==

def pop(self):

return self.items.pop()

def push(self, item):

def peek(self):

return self.items[len(self.items)-1]

def size(self):

return len(self.items)

def divideby2(decnumber):

remstack = stack()

while decnumber > 0:

rem = decnumber % 2 #求餘數

remstack.push(rem)

decnumber = decnumber // 2 # 整數除

binstring = ""

while not remstack.isempty():

binstring = binstring + remstack.pop()

return binstring

如果是轉化為八進位制或十六進製制呢,簡單修改一下就可以了。

class stack():

"""定義乙個棧"""

def __init__(self):

self.items =

def isempty(self):

return self.items() ==

def pop(self):

return self.items.pop()

def push(self, item):

def peek(self):

return self.items[len(self.items)-1]

def size(self):

return len(self.items)

def divideby(decnumber, base):

digits = '0123456789abcdef'

remstack = stack()

while decnumber > 0:

rem = decnumber % base #求餘數

remstack.push(rem)

decnumber = decnumber // base # 整數除

binstring = ""

while not remstack.isempty():

binstring = binstring + digits[remstack.pop()]

return binstring

print(divideby(35, 8))

棧 十進位制轉化為任意制

include include define stack init size 100 define size increment 5 typedef struct 棧結構 sqstack,sqstack int stackinit sqstack s 初始化棧 int push sqstack s,...

利用棧結構計算十進位制轉化二進位制

棧的順序表示實現 include include 棧初始大小 define stack init size 100 棧的增長大小 define stackincrement 10 define overflow 0 define error 0 define false 0 define true ...

資料結構應用 十進位制二進位制轉換

棧,一種運算受限的線性表,後進先出 lifo class stack 進棧 enterstack elem 出棧 outstack 檢視棧頂元素,僅僅是檢視元素,不進行任何操作 peek 棧是否為空 isempty 清空棧 clear 棧內元素個數 size 十進位制轉換 function deci...