栈
lass Stack(object):
"""栈"""
def __init__(self):
self.items = []
def is_empty(self):
"""判断是否为空"""
return self.items == []
def push(self, item):
"""加入元素"""
# 尾插 后进先出
self.items.append(item)
def pop(self):
"""弹出元素"""
# 弹出 从列表尾部删除
return self.items.pop()
def peek(self):
"""返回栈顶元素"""
return self.items[- 1] # python列表性质
def size(self):
"""返回栈的大小"""
return len(self.items)
队列
# 队列 (queue): 只允许在一端进行插入操作,而在另一端进行删除操作的线性表。
先进先出
"""
class Queue(object):
"""队列"""
def __init__(self):
self.__list = []
def is_empty(self):
"""判断队列是否为空"""
return self.__list == []
"""实现出队 入队的方式有两种,根据使用队列的哪种操作频繁去决定怎么实现O(1) O(n)"""
def enqueue(self, item):
"""进队列"""
return self.__list.insert(0, item)
def dequeue(self):
"""出队列"""
return self.__list.pop()
def size(self):
"""返回队列大小"""
return len(self.__list)
双端队列
class Dueue():
def __init__(self):
self.__list = []
def add_front(self, item):
self.__list.insert(0,item)
def add_rear(self, item):
self.__list.append(item)
def pop_front(self):
return self.__list.pop(0)
def pop_rear(self):
return self.__list.pop()
def is_empty(self):
"""判断队列是否为空"""
return self.__list == []
def size(self):
"""返回队列大小"""
return len(self.__list)