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

學無先后,達者為師

網站首頁 編程語言 正文

Python數據結構棧實現進制轉換簡單示例_python

作者:西召 ? 更新時間: 2023-04-03 編程語言

棧是一種后進先出(LIFO)的數據結構,在實際生活和工作中也很常見。

比如,在餐廳里的一摞盤子,總是從上面先取,也就是最后放到上面的先被取走。再比如,瀏覽網頁的時候,通過瀏覽器的回退按鈕訪問之前瀏覽過的網頁,也是最后訪問的先被獲取到。這些存儲結構,都可以稱之為棧。

下面是通過Python的數組實現的棧結構源碼:

# 數據結構:通過Python數組實現棧
class Stack:
    def __init__(self):
        self.items = []

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

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

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

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

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

我們可以通過棧結構,來做數字進制的轉換。

我們通常生活中使用的是十進制,而在計算機世界,二進制才是通用的語言。

通過取余的方式,我們可以實現從十進制到二進制的轉換,十進制轉八進制也是同理。

下面是實現的源碼:

import my_stack

# 十進制轉二進制
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

# 十進制:5 轉為二進制是:101
print(divide_by_2(5))

總結

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

欄目分類
最近更新