队列(queue)
队列是先进先出(FIFO, First-In-First-Out)的线性表,在具体应用中通常用链表或者数组来实现,队列只允许在后端(称为rear)进行插入操作,在前端(称为front)进行删除操作,队列的操作方式和堆栈类似,唯一的区别在于队列只允许新数据在后端进行添加(摘录维基百科)。
如图所示

队列的接口
一个队列至少需要如下接口:
| 接口 | 描述 |
|---|---|
| add(x) | 入队 |
| delete() | 出队 |
| clear() | 清空队列 |
| isEmpty() | 判断队列是否为空 |
| isFull() | 判断队列是否未满 |
| length() | 队列的当前长度 |
| capability() | 队列的容量 |
然而在Python中,可以使用collections模块下的deque函数,deque函数提供了队列所有的接口,那么先让我门看看队列deque函数提供了那些API把:
collections.deque是双端队列,即左右两边都是可进可出的
| 方法 | 描述 |
|---|---|
| append(x) | 在队列的右边添加一个元素 |
| appendleft(x) | 在队列的左边添加一个元素 |
| clear() | 从队列中删除所有元素 |
| copy() | 返回一个浅拷贝的副本 |
| count(value) | 返回值在队列中出现的次数 |
| extend([x..]) | 使用可迭代的元素扩展队列的右侧 |
| extendleft([x..]) | 使用可迭代的元素扩展队列的右侧 |
| index(value, [start, [stop]]) | 返回值的第一个索引,如果值不存在,则引发ValueError。 |
| insert(index, object) | 在索引之前插入对象 |
| maxlen | 获取队列的最大长度 |
| pop() | 删除并返回最右侧的元素 |
| popleft() | 删除并返回最左侧的元素 |
| remove(value) | 删除查找到的第一个值 |
| reverse() | 队列中的所有元素进行翻转 |
| rotate() | 向右旋转队列n步(默认n = 1),如果n为负,向左旋转。 |
新闻热点
疑难解答