队列 用数组实现的队列
队列
使用中情况
初始情况
特点:first in first out
应用到双端链表的方法: insertLast尾插法 deleteFirst 头删法
做循环处理
队列的方法操作
队列的插入
队列的方法
public void insert(long j); // put item at rear(back) of queue
//--------------------------------------------------------------
public long remove() ; // take item from front of queue
//--------------------------------------------------------------
public long peekFront() ; // peek at front of queue
//--------------------------------------------------------------
public boolean isEmpty() ; // true if queue is empty
//--------------------------------------------------------------
public boolean isFull() ; // true if queue is full
//--------------------------------------------------------------
public int size() ; // number of items in queue
显示一个队列
正常情况
1队列没有插入满元素(nItems<maxSize)
2 front > rear
插满又删除的情况
优先级队列<比栈和队列更专用的数据结构>
特点:数据项有序排列.<最小关键字数据项总在队头>
从队头插入,从队尾删除
概述:一个队头一个队尾.从队头移除数据项.
操作
方法概述
class PriorityQ
{
//-------------------------------------------------------------
public void insert(long item) ; // insert item
//-------------------------------------------------------------
public long remove() ; // remove minimum item
//-------------------------------------------------------------
public long peekMin() ; // peek at minimum item
//-------------------------------------------------------------
public boolean isEmpty() ; // true if queue is empty
//-------------------------------------------------------------
public boolean isFull() ; // true if queue is full
//-------------------------------------------------------------
} // end class PriorityQ
双端队列
实质: 双端队列就是一个两端都是结尾的队列.队列的每一端都可以插入数据项和移除数据项。
如果严格禁止调用insertLeft()<队尾插入>和removeRight()<队尾移除>方法(或者禁用右端的操作).双端队列的功能就和栈一样.禁止调用insertLeft()<队尾插入>和removeRight()<队首移除>(或者相反的另一对方法.它的功能就和普通队列一样了.
方法概述:
包含如下方法:
* insertLeft() 队列尾端插入数据 -- 双端队列新特性
* insertRight() 队首插入数据
* removeLeft() 队尾删除
* removeRight() 队首添加 -- 双端队列新特性
* isEmpty() 队列是否为空
* isFull() 队列是否已满
* 并且支持数据末端回绕
注:left -->队尾
right -->队首
双端队列初始化:
maxSize = size; //初始化队列数据项数量
queArray = new long[size];
//数据项(数组)的初始化
front = 0;//队尾
rear = -1;//队首
nItems = 0;//元素个数
效率
插入方法名称 |
插入效率 |
删除方法名称 |
删除效率 |
|
栈 Stack |
push() |
O[1] |
pop() |
O[1] |
普通循环队列 QueueX |
insert() |
O[1] |
remove() |
O[1] |
优先级队列 PriorityQ |
insert() |
O[N] |
remove() |
O[1] |