3.17.Python实现Deque

正如我们在前面的部分中所做的,我们将为抽象数据类型 deque 的实现创建一个新类。同样,Python 列表将提供一组非常好的方法来构建 deque 的细节。我们的实现(Listing 1)将假定 deque 的尾部在列表中的位置为 0。

  1. class Deque:
  2. def __init__(self):
  3. self.items = []
  4. def isEmpty(self):
  5. return self.items == []
  6. def addFront(self, item):
  7. self.items.append(item)
  8. def addRear(self, item):
  9. self.items.insert(0,item)
  10. def removeFront(self):
  11. return self.items.pop()
  12. def removeRear(self):
  13. return self.items.pop(0)
  14. def size(self):
  15. return len(self.items)

Listing 1

在 removeFront 中,我们使用 pop 方法从列表中删除最后一个元素。 但是,在removeRear中,pop(0)方法必须删除列表的第一个元素。同样,我们需要在 addRear 中使用insert方法(第12行),因为 append 方法在列表的末尾添加一个新元素。

你可以看到许多与栈和队列中描述的 Python 代码相似之处。你也可能观察到,在这个实现中,从前面添加和删除项是

 3.17.Python实现Deque  - 图1,而从后面添加和删除是 3.17.Python实现Deque  - 图2。 考虑到添加和删除项是出现的常见操作,这是可预期的。 同样,重要的是要确定我们知道在实现中前后都分配在哪里。