详解python数据结构之栈stack
短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
前言
栈(Stack)是一种运算受限的线性表。
按照先进后出(FILO,First In Last Out)的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶。栈只能在一端进行插入和删除操作。
文章内容包含:
(1)栈的基本格式
(2)压栈 push_stack
(3)出栈 pop_stack
(4)取栈顶 peek_stack
一、栈的基本格式
class Stack():
def __init__ (self,size):
self.size = size #栈空间大小
self.top = -1 #栈中进入一个数据 top 加 1
self.stack = []
def display_stack(self):#栈stack的打印
print(self.stack)
if __name__ == "__main__":
stack = Stack(5) #设定栈空间
stack.display_stack() #打印栈数据
二、进栈与压栈 push_stack
class Stack():
def __init__ (self,size):
self.size = size
self.top = -1
self.stack = [] #进栈数据列表
def display_stack(self):
print(self.stack)
def push_stack(self,data):
if len(self.stack ) >= self.size: #当数据数量大于设置的空间,则栈溢出
print("stack over flow!")
return
self.stack.append(data) #没有栈溢出就将数据追加到列表中
self.top += 1 #栈中每增加一个数据就加 1
if __name__ == "__main__":
stack = Stack(5)
stack.push_stack(0)
stack.push_stack(1)
stack.push_stack(2)
stack.push_stack(3)
stack.push_stack(4)
stack.push_stack(5) #stack空间是 5,这里进栈数据时 6 个,即提示栈溢出stack over flow!
stack.display_stack()
执行结果:
三、出栈 pop_stack
class Stack():
def __init__ (self,size):
self.size = size
self.top = -1
self.stack = [] #进栈数据列表
def display_stack(self):
print(self.stack)
def push_stack(self,data):
if len(self.stack ) >= self.size:
print("stack over flow!")
return
self.stack.append(data)
self.top += 1
def pop_stack(self):
if self.top <= -1: #当top小于等于初始值 -1 时说明stack数据列表为空
print("stack is empty!")
return
ret = self.stack.pop() #stack数据列表不为空就取出最后进的值,列表数据数量就少一个
self.top -= 1
return ret
if __name__ == "__main__":
stack = Stack(5)
stack.push_stack(0)
stack.push_stack(1)
stack.push_stack(2)
stack.push_stack(3)
stack.push_stack(4)
stack.display_stack()
#进栈数据有 5 个,出栈函数调用了 6 次,就出现了提示stack is empty!
ret = stack.pop_stack()
print(ret)
stack.display_stack()
ret = stack.pop_stack()
print(ret)
stack.display_stack()
ret = stack.pop_stack()
print(ret)
stack.display_stack()
ret = stack.pop_stack()
print(ret)
stack.display_stack()
ret = stack.pop_stack()
print(ret)
stack.display_stack()
ret = stack.pop_stack()
print(ret)
stack.display_stack()
执行结果:
四、取栈顶 peek_stack
class Stack():
def __init__ (self,size):
self.size = size
self.top = -1
self.stack = []
def display_stack(self):
print(self.stack)
def push_stack(self,data):
if len(self.stack ) >= self.size:
print("stack over flow!")
return
self.stack.append(data)
self.top += 1
def peek_stack(self):
if self.top == -1: #当栈内没有数据时 提示 stack is empty!
print("stack is empty!")
return
peek = self.stack[self.top] #栈不为空时,将栈顶的数据提取出来
return peek
if __name__ == "__main__":
stack = Stack(5)
stack.push_stack(0)
stack.push_stack(1)
stack.push_stack(2)
stack.push_stack(3)
stack.push_stack(4)
stack.push_stack(5)
stack.display_stack()
peek = stack.peek_stack()
print(peek)
执行结果:
到此这篇关于详解python数据结构之栈stack的文章就介绍到这了,更多相关python 栈stack内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341