可口可乐营销案例分析/专业seo培训
栈是一种运算受限的线性表,仅允许在一段进行元素的插入和删除操作,最后入栈的元素最先出栈,最先入栈的元素最后出栈,即 “先入后出”(FILO)或 “后入先出”(LIFO)。
自定义栈类。
class Stack(object):def __init__(self, maxsize=100): # 初始化空栈self.items = []self._size = maxsizeself._cnt = 0 # 计数器def isfull(self): # 判断是否为满return self._cnt == self._sizedef isempty(self): # 判断是否为空return self.items == []def setsize(self, size):if size < self._cnt:print("修改后大小小于原来大小。")returnelse:self._size = sizedef push(self, item): # 入栈if self._cnt < self._size:self.items.append(item)self._cnt += 1else:print("栈已满,无法入栈。")def pop(self): # 出栈if Stack.isempty(self):print("栈已空,无法出栈。")else:self._cnt -= 1return self.items.pop()def peek(self): # 查看栈顶元素return self.items[len(self.items) - 1]def size(self): # 查看当前栈的大小return self._cntdef clear(self): # 清空栈self.items = []self._cnt = 0def __del__(self): # 析构方法,释放列表空间del self._cnt# 当前对象的字符串表示,使用print()时会调用,此法给人阅读def __str__(self):return 'Stack_' + str(self.items)
将代码保存为stackDfg.py文件
可用下面代码来使用自定义的栈类。
from stackDfg import Stack
s = Stack()
s.push(5)
s.push(8)
s.push('a')
print(s)
s.pop()
print(s)
s.push('b')
s.push('c')
print(s)
s.setsize(8)
print(s)
s.setsize(3)
print(s)
s.clear()
print(s)
print(s.isempty())
print(s.isfull())
s.setsize(2)
print(s)
s.push(1)
s.push(2)
s.push(3)
print(s)
上面的代码演示了自定义栈结构的用法。