对于栈来说,其实它就是一个单开的列表(LIFO原则)。我们只需考虑将列表的哪一端视为顶端即可。
然后我们就可以用pop等一系列列表的方法来实现栈~
下面是列表的原理:
class Stack:
def __init__(self):
self.items = []
def isEmpty(self): # 检查栈是否为空。无需参数,且返回一个布尔值
return self.items == []
def push(self, item): # 将一个元素添加到栈的顶端。需要一个参数item,且无返回值
self.items.append(item)
def pop(self): # 将栈顶端的元素移除。无需参数,但会返回顶端元素,并修改栈的内容
return self.items.pop()
def peek(self): # 返回栈顶端的元素,但不移除该元素。无需参数,不修改栈内容
return self.items[len(self.items) - 1]
def size(self): # 返回栈中元素的数目。无需参数,且会返回一个整数
return len(self.items)
s = Stack() # 创建一个空栈。无需参数,且返回一个空栈
print(s.isEmpty()) # 检查栈是否为空。无需参数,且返回一个布尔值
s.push(10) # 将一个元素添加到栈的顶端。需要一个参数item,且无返回值
s.push('Cheems')
print(s.peek()) # 返回栈顶端的元素,但不移除该元素。无需参数,不修改栈内容
s.push('Hello World')
print(s.size()) # 返回栈中元素的数目。无需参数,且会返回一个整数
print(s.isEmpty())
s.push(114514)
print(s.pop()) # 将栈顶端的元素移除。无需参数,但会返回顶端元素,并修改栈的内容
似乎有些长,看起来让人不那么心情愉悦,所以我们在日常使用栈时,一般会选择下面这条语句:
from pythonds.basic import Stack #记得先导入pythonds模块