網(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
相關(guān)推薦
- 2023-04-04 Python筆記之Scipy.stats.norm函數(shù)使用解析_python
- 2024-03-09 【Spring Boot】實(shí)現(xiàn)全局異常處理
- 2022-05-24 Golang?錯(cuò)誤捕獲Panic與Recover的使用_Golang
- 2022-04-09 SpringBoot 項(xiàng)目打包成jar包,并執(zhí)行Jar文件
- 2022-09-29 一文詳解Golang中net/http包的實(shí)現(xiàn)原理_Golang
- 2023-07-29 highcharts中g(shù)antt甘特圖的使用
- 2022-07-21 數(shù)據(jù)庫(kù)慢查詢介紹并優(yōu)化
- 2022-09-13 ios開發(fā)Flutter之?dāng)?shù)據(jù)存儲(chǔ)_IOS
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支