用列表作为栈的存储容器,实现栈的压栈和出栈操作。
栈可以表示自己的大小和当前存储了多少元素。
判断栈是否空栈,判断栈是否满栈。
显示栈有多少个元素,还有多少个存储空间。
将栈制为空栈。
分析:
需要创建栈(stack)类
属性:一个空列表(list)
栈的最大长度(max_count)
方法:进栈(push) 出栈(pop)
判空(isEmpty) 判满(isFull)
元素个数(count) 剩余空间(leftspace)
清空栈(clean)
class Stack():
"""栈数据结构,
原理:先进后出
属性:列表,最大存储空间
方法:出栈,进栈,判空,判满,元素个数,清空栈,剩余空间"""
def __init__(self, max_count):
self.list = []
self.max_count = max_count
# 进栈
def push(self, element):
if self.isFull() is False:
self.list.append(element)
else:
print("栈已经满了")
# 出栈
def pop(self):
if self.isEmpty() is False:
return self.list.pop()
else:
print("扎牛精控了")
# 通过列表长度判断栈是否为空
def isEmpty(self):
if len(self.list) == 0:
return True
else:
return False
# 通过列表长度判断栈是否已满
def isFull(self):
if len(self.list) == self.max_count:
return True
else:
return False
# 栈中元素个数
def count(self):
return len(self.list)
# 剩余空间
def leftspace(self):
return self.max_count - len(self.list)
# 将栈置为空栈
def clean(self):
self.list.clear()
stact01 = Stack(10)
stact01.push("xiaoming")
stact01.push("sanming")
print("进栈二个元素后:")
print("栈中元素个数为:"+str(stact01.count())+" 剩余空间为:"+str(stact01.leftspace()))
stact01.pop()
print("出栈一个元素后:")
print("栈中元素个数为:"+str(stact01.count())+" 剩余空间为:"+str(stact01.leftspace()))
stact01.clean()
print("清空栈后:")
print("栈中元素个数为:"+str(stact01.count())+" 剩余空间为:"+str(stact01.leftspace()))
结果: