一,队列的概念:
1队列(Queue)是特殊的线性表,先进先出FIFO,只允许在队列的前端(front)进行删除操作,而在队列的尾部(rear)进行插入操作,
没有元素时,称为空队列。
2队列可以分为:
单向队列(Queue)只允许在一端插入数据,另一端删除数据。
与栈不同的地方,队列内部的数据不总是从数组的下标0开始的,因为在移除队列头的元素后,队头的指针会往较高的数组的索引的位置。
3实现队列需要实现:
1、队尾插入数据
2、队头删除数据
3、判断是否为空
4、获取队列中实际的元素个数
5、查看队头的数据
二,双向队列的概念:
在队列的两端都可以进行删除和添加元素的操作。
insert_Left() remove_Left() insert_Right() remove_Right()
如果禁止双向队列的insert_Left()和 remove_Right()方法(或者禁用insert_Right()和remove_Left() 方法),双向队列的功能就跟单向队列的功能一样。
如果禁止insert_Left() remove_Left()方法(或者禁用 insert_Right() remove_Right()),双向队列的功能就跟栈的功能一样。
三,方法:
四:操作方法:
插入元素
addFirst(): 向队头插入元素,如果元素为空,则发生NPE
addLast(): 向队尾插入元素,如果为空,则发生NPE
offerFirst(): 向队头插入元素,如果插入成功返回true,否则返回false
offerLast(): 向队尾插入元素,如果插入成功返回true,否则返回false
移除元素
removeFirst(): 返回并移除队头元素,如果该元素是null,则发生NoSuchElementException
removeLast(): 返回并移除队尾元素,如果该元素是null,则发生NoSuchElementException
pollFirst(): 返回并移除队头元素,如果队列无元素,则返回null
pollLast(): 返回并移除队尾元素,如果队列无元素,则返回null
获取元素
getFirst(): 获取队头元素但不移除,如果队列无元素,则发生NoSuchElementException
getLast(): 获取队尾元素但不移除,如果队列无元素,则发生NoSuchElementException
peekFirst(): 获取队头元素但不移除,如果队列无元素,则返回null
peekLast(): 获取队尾元素但不移除,如果队列无元素,则返回null