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())