class SequenceStack(object):
def __init__(self,size=10):
self.max=size#最大容量
self.top=-1#top指针
self.s=[None]*self.max# 提前构建一个固定大小的栈,初始化全为None
'''判断栈是否为空'''
def is_empty(self):
return self.top is -1
'''判断栈是否为满'''
def is_full(self):
return self.top>=self.max-1
'''进栈'''
def push(self,value):
if self.top>=self.max-1:
print('栈满')
return
else:
self.top+=1
self.s[self.top]=value
'''出栈'''
def pop(self):
if self.top is -1:
print('栈为空')
else:
i=self.top
self.top-=1
return self.s[i]
'''获取栈顶元素'''
def gettop(self):
if self.top is -1:
print('栈为空')
else:
return self.s[self.top]
'''显示栈内所有元素'''
def printstack(self):
if self.top is -1:
print('栈为空')
else:
for i in range(self.top+1):
print(self.s[i],end=' ')
'''获取顺序栈的长度'''
def length(self):
num=0
for i in range(0, self.top + 1):
num = num + 1
return num
'''创建一个顺序栈'''
def creatstack(self):
data=input("请输入元素,以“#”结束:")
while data!='#':
self.push(data)
data = input("请输入元素,以“#”结束:")
if __name__=="__main__":
s=SequenceStack()
s.creatstack()#创建顺序栈
print('栈是否为空:', s.is_empty())
print('栈是否为满:', s.is_full())
print('栈顶元素:',s.gettop())
print('栈内所有元素:')
s.printstack()
print('\n')
print('栈长度:', s.length())