数据结构与算法(python版)(七)
1、队列
队列是一种先进先出(FIFO, First In First Out)的线性表,允许插入的一端叫队尾,允许删除的一端叫队头,不允许在中间部位进行操作。
2、队列的操作
① Queue() 创建一个空队列
② enqueue(item) 添加新的元素item到队列
③ dequeue() 从头部删除一个元素
④ is_empty() 判断队列是否为空
⑤ size() 返回队列的大小
3、队列的实现
class Queue(object):
#队列
def __init__(self):
self.__list = []
def enqueue(self, item):
#往队列中添加一个item元素
self.__list.append(item)
def dequeue(self):
#从队列头部删除一个元素
return self.__list.pop(0)
def is_empty(self):
#判断队列是否为空
return self.__list == []
def size(self):
#返回队列的大小
return len(self.__list)
if __name__ == '__main__':
s = Queue()
s.enqueue(1)
s.enqueue(2)
s.enqueue(3)
s.enqueue(4)
print(s.dequeue())
print(s.dequeue())
print(s.dequeue())
print(s.dequeue())
4、双端队列
Double-ended queue具有队列和栈的性质的数据结构,双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行。
5、双端队列的操作
① Deque() 创建一个空的双端队列
② add_front(item) 从队头插入一个item元素
③ add_rear(item) 从队尾插入一个item元素
④ remove_front() 从队头删除一个item元素
⑤ remove_rear() 从队尾删除一个item元素
⑥ is_empty() 判断双端列表是否为空
⑦ size() 返回队列的大小
6、双端队列的实现
class Deque(object):
#双端队列
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)