python常用的数据结构3-双端队列
2019-03-11
本博客所有文章采用的授权方式为 自由转载-非商用-非衍生-保持署名 ,转载请务必注明出处,谢谢。
声明: 本博客欢迎转发,但请保留原作者信息!
github地址:atanx
新浪微博:@蜀山掌门V
QQ:365039667
博客地址:江斌的博客
内容仅供学习参考,如有不当引用,请告知博主。
什么是双端队列
队列
是一种先进先出(FIFO)的数据结构。
双端队列的抽象数据类型
- Q.add_first(e) # 向双端队列前面添加一个元素e
- Q.add_last(e) # 向双端队列后面添加一个元素e
- Q.delete_first() # 头部移除并返回一个元素,若为空触发一个错误
- Q.delete_last() # 尾部移除并返回一个元素,若为空触发一个错误
- D.first()
- D.last()
- D.is_empty() # 判断双端队列是否为空
- len(Q) # 返回队列长度
双端队列的Python实现
#!/usr/bin/env python
# coding=utf-8
#
# Copyright 2019, Bin Jiang
#
# 实现队列数据结构
from pyds.error import EmptyError
from collections import deque
class Deque(object):
def __init__(self):
self._deque = deque()
def add_first(self, e):
""" 头部添加一个元素 """
self._deque.appendleft(e)
def add_last(self, e):
""" 尾部添加一个元素 """
self._deque.append(e)
def delete_first(self):
""" 头部移除一个元素 """
if self.is_empty():
raise EmptyError('deque is empty')
return self._deque.popleft()
def delete_last(self):
""" 尾部移除一个元素 """
if self.is_empty():
raise EmptyError('deque is empty')
return self._deque.pop()
def first(self):
""" 访问第一个元素 """
return self._deque[0]
def last(self):
""" 访问最后一个元素 """
return self._deque[-1]
def __len__(self):
return len(self._deque)
def is_empty(self):
""" 判断双端队列是否为空 """
return len(self._deque) == 0