需求:
-
用列表作为栈的存储容器,实现栈的压栈和出栈操作。
-
栈可以表示自己的大小和当前存储了多少元素。
-
判断栈是否空栈,判断栈是否满栈。
-
显示栈有多少个元素,还有多少个存储空间。
-
将栈制为空栈。
-
分析:
- 需要创建栈(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()))
结果: