查看: 63453|回复: 65094
打印 上一主题 下一主题

队列详解及java实现

[复制链接]
云顶集团40082com四川版的
跳转到指定楼层
楼主
发表于 2019-04-19 00:39:20 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

队列详解及java实现


导读

  栈和队列是有操作限制的线性表。

目录

1、队列的概念、特点、存储结构。

2、栈队列的java实现。

概念

  队列是一种在一端进行插入,而在另一端进行删除的线性表。
1、队列的插入端称为队尾;队列的删除端称为队头。(好比火车进隧道)
2、队列的插入操作称为入队(push),删除操作称为出队(pop)。

特点

  队列就像一列进入隧道的火车,隧道就是队列,火车车厢就是元素,进入隧道就是从隧道的这头(队尾)插入元素,出隧道就是从隧道的另一头(队头)删除元素。所以是“先进先出”的特点。

存储结构

  类似栈有顺序队和链式队两种。

java实现

  我们可以围绕栈的4个元素来实现队列:

2状态:是否队空;是否队满。

2操作:进队push;出队pop。

顺序队的实现

   顺序队列的实现也可以使用数组来完成,同栈的实现一样,只是栈是在同一端进行压栈和进栈操作,而队列是在一端做push,另一端做pop操作。

可以看一下下面的队列操作示意图:

 

   我们在实现顺序栈时使用头指针“front”和尾指针“rear”分别进行出队和入队操作,但普通的队列如上图所示,会发生“假溢出”现象,所以我们通常将数组弄成一个环状,即队头和队尾相连,这样就形成了“循环队列”,同时也解决了“假溢出”现象。循环队列是改进版的顺序队列。

  如图:

 

  对于普通队列的push或pop我们只需要对尾指针或头指针进行自增操作即可,但是循环队列我们就不能单纯的进行自增,当front或rear=maxSize-1时我们就不能进行自增操作了,比如一个队列尾长度为4的数组datas[4],那么当front或rear需要在0,1,2,3之间进行循环“推进”,以此达到循环队列的效果。所以我们可以使用rear = (rear+1)%maxSize ;front = (front+1)%maxSize ;公式进行指针计算。

  需要注意的是:队空状态的条件为:front = rear。而如果整个队列全部存满数据那么,队满的条件也是front = rear;所以循环队列需要损失一个存储空间,如下图:

 

 

  解决了这些问题我们就可以很轻松地实现循环队列了:

 

 1 package test;
 2 
 3 public class SqQueue<T>{
 4     private T[] datas;//使用数组作为队列的容器
 5     private int maxSize;//队列的容量
 6     private int front;//头指针
 7     private int rear;//尾指针
 8 
 9     //初始化队列
10     public SqQueue(int maxSize){
11         if(maxSize<1){
12             maxSize = 1;
13         }
14         this.maxSize = maxSize;
15         this.front = 0;
16         this.rear = 0;
17         this.datas = (T[])new Object[this.maxSize];
18     }
19 
20     //两个状态:队空&队满
21     public boolean isNull(){
22         if(this.front == this.rear)
23             return true;
24         else
25             return false;
26     }
27 
28     public boolean isFull(){
29         if((rear+1)%this.maxSize==front)
30             return true;
31         else
32             return false;
33     }
34 
35     //初始化队列
36     public void initQueue(){
37         this.front = 0;
38         this.front = 0;
39     }
40 
41     //两个操作:进队&出队
42     public boolean push(T data){
43         if(isFull())
44             return false;//队满则无法进队
45         else{
46             datas[rear] = data;//进队
47             rear = (rear+1) % maxSize;//队尾指针+1.
48             return true;
49         }
50     }
51     public T pop(){
52         if(isNull())
53             return null;//对空无法出队
54         else{
55             T popData = datas[front++];//出队
56             front = (front+1) % maxSize;//队头指针+1
57             return popData;
58         }
59     }
60 
61     //get()
62     public T[] getDatas() {
63         return datas;
64     }
65 
66     public int getMaxSize() {
67         return maxSize;
68     }
69 
70     public int getFront() {
71         return front;
72     }
73 
74     public int getRear() {
75         return rear;
76     }
77 }

 

  测试:

点击获取礼包
龙8娱乐_龙8娱乐国际_龙8娱乐国际官方龙8娱乐
沙发
发表于 2019-04-19 05:49:11 | 只看该作者
古拉顿立刻发出一声痛叫,超神兽的防御和体力是极为可怕的,历史当中他明明是地面和火属性的可还是却能在大海之中和同为超神兽的海皇牙激战不影响到他自己,可以说明明是被水克制却能进入大海里面不受影响实在是厉害。
回复 支持 反对

使用道具 举报

千亿国际|注册
板凳
发表于 2019-04-19 15:22:58 | 只看该作者
“好!”范太监咬咬牙说道:“我放二位出来,只是希望二位不要让我为难!”/unonews83662/index.html
回复 支持 反对

使用道具 举报

亿万先生手机版客户端
地板
发表于 2019-04-19 02:53:16 | 只看该作者
雪飞鸿暗恼。给她发了个信息:小妞。敢挂我的电话。看我回去揍肿你的小屁股。你给我等着!
回复 支持 反对

使用道具 举报

优发国际&官网
5#
发表于 2019-04-19 10:21:33 | 只看该作者
萧胜男想了想,而后摇头说道:“我的直觉告诉我,这次她一定是遇到了大麻烦。对了,小民弟弟,你刚才不是说,你在特勤局有朋友吗,能不能找他们帮帮忙?”
回复 支持 反对

使用道具 举报

赢8娱乐app
6#
发表于 2019-04-19 00:39:18 | 只看该作者
尤其是配合降龙十八掌这样大杀伤力范围的武学和刘皓本身的不灭真气一入先天就完全凌驾于所有真气的特性更是可怕。
回复 支持 反对

使用道具 举报

无极2娱乐待遇
7#
发表于 2019-04-19 16:07:02 | 只看该作者
张知节十分不解,他还不知道李适已经驾崩的消息,消息在长安县已经传开了,但在万年县,消息依然被严密封锁,张筠也是得到了宫里人第一时间的密报。
回复 支持 反对

使用道具 举报

捷克娱乐定位胆技巧
8#
发表于 2019-04-19 00:06:05 | 只看该作者
一听施珍娜娇中带羞说‘我等你’,雪飞鸿心中激动,难道小妮子好了?
回复 支持 反对

使用道具 举报

2019uc可用黄址
9#
发表于 2019-04-19 01:45:56 | 只看该作者
不过对于孙艺维提出的要求叶扬还是很乐意的就答应了。不光是为了让孙艺维高兴一下,他自己也要好好的放松一下了,黑暗落幕,就算那黄金罗盘能够带来什么麻烦,那也不见得比乌鲁还麻烦。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

藏金阁登录网址是互联网最大的搜索引擎优化研究中心,是致力于培养学员用户体验意识和提供专业技术解答的专业培训机构, 成立于2007年,2008年第一家入驻歪歪的培训机构,2014年成为腾讯课堂战略合作机构。
© 2007-2016 藏金阁登录网址 湘ICP备13004652号-1 Powered by Discuz!X  Template by 藏金阁登录网址 
快速回复 返回顶部 返回列表