python数据结构(六):顺序栈
·
class SequenceStack:
"""顺序栈
"""
top = None
def __init__(self):
"""初始化顺序栈
"""
self.MaxStackSize = int(input("输入栈的大小:"))
self.s = [None for x in range(0, self.MaxStackSize)]
self.top = -1
def IsEmptyStack(self):
"""判断栈是否为空
"""
if self.top == -1:
return True
else:
return False
def PushStack(self, element):
"""入栈
"""
if self.top < self.MaxStackSize - 1:
self.top = self.top + 1
self.s[self.top] = element
else:
print("栈满!")
self.StackTraverse()
return
def PopStack(self):
"""出栈
"""
if self.IsEmptyStack():
print("栈空!")
return
else:
iTop = self.top
self.top = self.top - 1
return self.s[iTop]
def StackTraverse(self):
"""遍历顺序栈
"""
if self.IsEmptyStack():
print("栈空!")
return
else:
print("当前栈底至栈顶数据分别为:")
for i in range(0, self.top + 1):
print(self.s[i], end=' ')
print("")
def GetTopStack(self):
"""获取顺序栈顶数据
"""
if self.IsEmptyStack():
print("栈空!")
return
else:
return self.s[self.top]
def GetStackLength(self):
"""获取当前栈长度
"""
if self.IsEmptyStack():
print("栈空!")
return
else:
return self.top + 1
def CreateStackByInput(self):
"""创建顺序栈
"""
data = input("请输入数据,按#结束:")
while data != '#':
self.PushStack(data)
data = input("请输入数据,按#结束:")
self.StackTraverse()
ss = SequenceStack()
ss.CreateStackByInput()
element = input("输入入栈数据:")
ss.PushStack(element=element)
print("当前栈长度为:", ss.GetStackLength())
print("当前栈顶数据为:", ss.GetTopStack())
print("出栈数据为:", ss.PopStack())
------------------------------------------------------------
输入栈的大小:10
请输入数据,按#结束:1
请输入数据,按#结束:2
请输入数据,按#结束:3
请输入数据,按#结束:4
请输入数据,按#结束:5
请输入数据,按#结束:#
当前栈底至栈顶数据分别为:
1 2 3 4 5
输入入栈数据:10
当前栈长度为: 6
当前栈顶数据为: 10
出栈数据为: 10
可添加栈满时动态增加栈大小的操作。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)