日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁(yè) 編程語(yǔ)言 正文

Python數(shù)據(jù)結(jié)構(gòu)棧實(shí)現(xiàn)進(jìn)制轉(zhuǎn)換簡(jiǎn)單示例_python

作者:西召 ? 更新時(shí)間: 2023-04-03 編程語(yǔ)言

棧是一種后進(jìn)先出(LIFO)的數(shù)據(jù)結(jié)構(gòu),在實(shí)際生活和工作中也很常見。

比如,在餐廳里的一摞盤子,總是從上面先取,也就是最后放到上面的先被取走。再比如,瀏覽網(wǎng)頁(yè)的時(shí)候,通過瀏覽器的回退按鈕訪問之前瀏覽過的網(wǎng)頁(yè),也是最后訪問的先被獲取到。這些存儲(chǔ)結(jié)構(gòu),都可以稱之為棧。

下面是通過Python的數(shù)組實(shí)現(xiàn)的棧結(jié)構(gòu)源碼:

# 數(shù)據(jù)結(jié)構(gòu):通過Python數(shù)組實(shí)現(xiàn)棧
class Stack:
    def __init__(self):
        self.items = []

    # 檢查棧是否為空。它不需要參數(shù),且會(huì)返回一個(gè)布爾值。
    def is_empty(self):
        return self.items == []

    # 將一個(gè)元素添加到棧的頂端。它需要一個(gè)參數(shù)item,且無返回值。
    def push(self, item):
        self.items.append(item)

    # 將棧頂端的元素移除。它不需要參數(shù),但會(huì)返回頂端的元素,并且修改棧的內(nèi)容。
    def pop(self):
        return self.items.pop()

    # 返回棧頂端的元素,但是并不移除該元素。它不需要參數(shù),也不會(huì)修改棧的內(nèi)容。
    def peek(self):
        return self.items[len(self.items) - 1]

    # 返回棧中元素的數(shù)目。它不需要參數(shù),且會(huì)返回一個(gè)整數(shù)。
    def size(self):
        return len(self.items)

我們可以通過棧結(jié)構(gòu),來做數(shù)字進(jìn)制的轉(zhuǎn)換。

我們通常生活中使用的是十進(jìn)制,而在計(jì)算機(jī)世界,二進(jìn)制才是通用的語(yǔ)言。

通過取余的方式,我們可以實(shí)現(xiàn)從十進(jìn)制到二進(jìn)制的轉(zhuǎn)換,十進(jìn)制轉(zhuǎn)八進(jìn)制也是同理。

下面是實(shí)現(xiàn)的源碼:

import my_stack

# 十進(jìn)制轉(zhuǎn)二進(jìn)制
def divide_by_2(number):
    stack = my_stack.Stack()

    while number > 0:
        temp = number % 2
        stack.push(temp)
        number = number // 2

    binStr = ''
    while not stack.is_empty():
        binStr = binStr + str(stack.pop())

    return binStr

# 十進(jìn)制:5 轉(zhuǎn)為二進(jìn)制是:101
print(divide_by_2(5))

總結(jié)

原文鏈接:https://juejin.cn/post/7195156129687535677

欄目分類
最近更新