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
可添加栈满时动态增加栈大小的操作。