队列(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为负,向左旋转。 |
新闻热点
疑难解答