本文摘自php中文网,作者藏色散人,侵删。

栈(stack)是一个项的有序集合,其中添加移除新项总发生在同一端。这一端通常称为“顶部”。与顶部对应的端称为“底部”。

就像图片所描述的,栈s=(a1,a2,…an-1,an)。最后入栈的是an,最先出栈的也是an。所以栈符合LIFO原则。
LIFO
LIFO,即后进先出的排序原则。它基于在集合内的时间长度做排序。较新的项靠近顶部,较旧的项靠近底部。栈的底部很重要,因为在栈中靠近底部的项是存储时间最长的。最近添加的项是最先会被移除的。
栈之所以重要是因为它能反转项的顺序。插入跟删除顺序相反。
最典型的例子就是每个 web 浏览器都有一个返回按钮。当你浏览网页时,这些网页被放置在一个栈中(实际是网页的网址)。你现在查看的网页在顶部,你第一个查看的网页在底部。如果按‘返回’按钮,将按相反的顺序浏览刚才的页面。
Python实现栈
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | # 创建一个空的新栈。 它不需要参数,并返回一个空栈。
class Stack:
def __init__(self):
self.items = []
# 测试栈是否为空。不需要参数,并返回布尔值。
def isEmpty(self):
return self.items == []
# 将一个新项添加到栈的顶部。它需要 item 做参数并不返回任何内容。
def push(self, item):
self.items.append(item)
# 从栈中删除顶部项。它不需要参数并返回 item 。栈被修改。
def pop(self):
return self.items.pop()
# 从栈返回顶部项,但不会删除它。不需要参数。 不修改栈。
def peek(self):
return self.items[len(self.items)-1]
# 返回栈中的 item 数量。不需要参数,并返回一个整数。
def size(self):
return len(self.items)
|
将十进制数转换为任意进制数
知道了栈的基本操作就做一个小项目来练练手。将十进制数转换为任意进制数,其实最高也就十六进制(还有更高进制吗)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | def baseConverter(n, base):
# n是输入的十进制数字,base为要转化的进制数
digits = '0123456789ABCDEF'
#创建一个新栈
s= Stack()
# 将每次计算所得的余数添加进栈
while n> 0:
rem = n % base
s.push(rem)
n = n
# 将余数倒序排列至新字符串
newString = ''
while not remstack.isEmpty():
newString = newString + digits[remstack.pop()]
return newString
|
相关推荐:《Python教程》
以上就是python中的栈指的是什么的详细内容,更多文章请关注木庄网络博客!!
相关阅读 >>
对Python的链表数据结构讲解
Python中self是什么
Python卸载容易吗
Python“与”怎么表示
Python编程工具有哪些
Python中函数count()的功能是什么
Python之网页爬虫教程
Python怎么发送post
Python ipo模型是指什么?
Python字符串如何转化为列表
更多相关阅读请进入《Python》频道 >>
人民邮电出版社
python入门书籍,非常畅销,超高好评,python官方公认好书。
转载请注明出处:木庄网络博客 » python中的栈指的是什么