前言

引自书中:栈(有时称为“后进先出栈”)是一个项的有序集合,其中添加移除新项总发生在同一端。这一端通常称为“顶部”。与顶部对应的端称为“底部
”。栈的底部很重要,因为在栈中靠近底部的项是存储时间最长的。最近添加的项是最先会被移除的。这种排序原则有时被称为 LIFO
,后进先出。它基于在集合内的时间长度做排序。较新的项靠近顶部,较旧的项靠近底部。

栈的函数

利用栈实现括号缺失检测
from pythonds.basic.stack import Stack s_dict = {"{":"}","[":"]","(":")"} def
parChecker(symbolString): balance = True s = Stack() for char in symbolString:
if char in "{[(": s.push(char) elif char in "}])": if s.isEmpty():
#一种情况是左括号缺失,栈内没有左括号 balance = False else: if s_dict[s.peek()] == char: s.pop()
#每组成一队括号,栈就弹出一个成员 return s.isEmpty() and balance #最后,所有括号均能匹配,栈应该是空的
print(parChecker('123(((131)))1331')) print(parChecker('([])({})[]'))
print(parChecker('123(((131)))1331')) print(parChecker('([])({})[]')) True True
Process finished with exit code 0
利用栈实现十进制与其他进制转换
from pythonds.basic.stack import Stack def
baseConverter(decNumber:int,base:int): digits = "0123456789ABCDEF" if base > 16
or base < 2: return decNumber #超出转换范围 remstack = Stack() #储存余数 while decNumber
> 0: rem = decNumber % base #取余数 remstack.push(rem) decNumber = decNumber //
base #向下取整做除法 newString = "" while not remstack.isEmpty() : newString =
newString + digits[remstack.pop()] return newString print(baseConverter(25,2))
print(baseConverter(169,16)) 11001 A9 Process finished with exit code 0
 

技术
©2019-2020 Toolsou All rights reserved,
Keras训练数据加载实现小结Android 11正式版发布!新手玩海思HI3520D开发板(一,升级)科幻成真!“三体”被发现了SSM项目的excel文件上传并添加到数据库LED 滚动文字央视:Tiktok打官司表明了维权的态度和决心(精华)2020年6月26日 C#类库 读取json配置文件帮助类Fiddler模拟请求发送和修改响应数据指定位置输出字符串(详细解析)