码迷,mamicode.com
首页 > 其他好文 > 详细

队列的实现(一)顺序队列的实现

时间:2016-06-13 17:08:58      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:

队列:只能一端进行出栈一端进行进栈。

队首:只允许进行出栈操作,可以进行删除。

队尾:只允许进行入栈操作,可以进行插入。

队尾进,队尾出,先进先出。

所以队列的实现也有两种形式,一种是数组实现队列,一种是用链表实现队列。

技术分享

首先是用数组来实现队列。

使用数组队列,因为在删除时front会越来越大,所以最后会出现一种还有空间但是却显示无空间的现象。

解决方法:

构建循环队列,算法为:

判断是否队满:(rear+1)%a.length==front  //如果相等的话则证明队列已满

rear=(rear+1)%a.length;       //创建循环

实现代码:

 1     public class Queue {  
 2         private static final int defaultSize = 10;  
 3         private Node[] a;  
 4         private int rear;  
 5         private int front;  
 6         Queue(){                //默认构造方法  
 7             a = new Node[10];  
 8             rear = 0;  
 9             front = 0;  
10         }  
11         Queue(int n){           //指定队列长度的构造方法  
12             a = new Node[n];  
13             rear = 0;  
14             front = 0;  
15         }  
16         public boolean add(Node node){          //在队尾增加队列节点  
17             if((rear+1) % a.length == front )       //检测该对列是否已经满了  
18                 return false;  
19             else{  
20                 a[rear] = node;  
21                 rear = (rear+1) % a.length;     //构建循环队列      
22                 return true;  
23             }     
24         }  
25         public Node remove(){                   //删除对首节点  
26             if(rear == front)  
27                 return null;  
28             else{  
29                 Node n = a[front];  
30                 front = (front+1) % a.length;  
31                 return n;  
32             }     
33         }  
34         public boolean isEmpty(){               //检测是否为空  
35             if(rear == front)  
36                 return true;  
37             else   
38                 return false;  
39         }  
40         public int size(){              //返回队列长度  
41             return a.length;  
42         }  
43     }  

 

队列的实现(一)顺序队列的实现

标签:

原文地址:http://www.cnblogs.com/ran-yeyu/p/5581214.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!