队列 用数组实现的队列

队列

使用中情况

 

初始情况

 

特点: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]

posted @ 2013-07-01 05:11  王超_cc  阅读(308)  评论(0编辑  收藏  举报