定义
栈是一种只能在一端进行操作的线性表,遵循“后进先出(LIFO)”的原则,当栈为空时,栈顶指针top= -1。
python实现
class SequenceStack:
def __init__(self):
self.MaxStackSize = 10
self.s = [None for x in range(0,self.MaxStackSize)]
self.top = -1
'''判断栈是否为空'''
def IsEmptyStack(self):
if self.top == -1:
iTop = True
else:
iTop = False
return iTop
'''进栈'''
def PushStaxk(self,x):
if self.top < self.MaxStackSize-1:
self.top = self.top+1
self.s[self.top] = x
else:
print("栈满")
return
'''出栈'''
def PopStack(self):
if self.IsEmptyStack == True:
print("栈为空")
return
else:
iTop = self.top
self.top = self.top-1
return self.s[iTop]
'''获取栈顶元素'''
def GetTopStack(self):
if self.IsEmptyStack == True:
print("栈为空")
return
else:
return self.s[self.top]
'''遍历栈内元素'''
def StackTraverse(self):
if self.IsEmptyStack == True:
print("栈为空")
return
else:
for i in range(0,self.top + 1):
print(self.s[i],end = ' ')
'''创建一个顺序栈'''
def CreateStackByInput(self):
data = input("请输入元素(确定按回车键,结束按“#”):")
while data != "#":
self.PushStaxk(data)
data = input("请输入元素(确定按回车键,结束按“#”):")
ss = SequenceStack()
ss.CreateStackByInput()
print("栈内元素为:",end = ' ')
ss.StackTraverse()
print("\n栈顶元素为:",ss.GetTopStack())
结果如下: