数据结构系列之循环队列
来源:互联网 发布:淘宝护肤品店铺排行 编辑:程序博客网 时间:2024/06/05 09:27
基于数组的循环队列的Java实现
1、借助数组创建一个循环队列类
package 队列;/*数组实现的循环队列*/public class ArrayQueue {private int first,last,maxSize;private Object[] storage;public ArrayQueue(){this(100);}public ArrayQueue(int n){ //构造函数maxSize=n;storage=new Object[maxSize];first=last=-1;}public int getLength(){ //取得队列中有效数据长度if(this.isEmpty())return 0;else if(last>=first)return last-first+1;elsereturn (maxSize-first)+(last-0+1);}public boolean isFull(){ //判断是否为满队列return first==0&&last==maxSize-1||first==last+1;}public boolean isEmpty(){ //判断是否为空队列return first==-1;}public void enqueue(Object e1){ //进队列操作if(this.isEmpty()){ //当队列为空时storage[0]=e1;first=last=0;}else if(!this.isFull()){ //队列不空且不满时 if(last==maxSize-1){ //当last位于最后一个位置时storage[0]=e1;last=0; }elsestorage[++last]=e1;}}public Object dequeue(){ //删除队列头元素if(!this.isEmpty()){Object temp=storage[first];if(first==last) //只有一个元素时first=last=-1;else if(first==maxSize-1) //不止一个元素且first位于最后位置时first=0;else //不止一个元素且first不是位于最后位置时first++;return temp;}elsereturn null;}public void printAll(){if(!this.isEmpty()){if(last>=first){//当first小于last时正常打印for(int i=first;i<=last;i++)System.out.print(storage[i]+" ");}else{//当first大于last时分两次打印,先打印first到maxSize-1;再打印0到lastfor(int i=first;i<maxSize;i++)System.out.print(storage[i]+" ");for(int j=0;j<last+1;j++)System.out.print(storage[j]+" ");}}elseSystem.out.print("队列已空!");}}
2、创建测试类
package 队列;public class Test {public static void main(String[] args) {// TODO Auto-generated method stubArrayQueue q=new ArrayQueue(3);q.enqueue(2);System.out.println("队列此时长度为:"+q.getLength()); //1q.enqueue(1);System.out.println("队列此时长度为:"+q.getLength()); //2q.enqueue(4);//3q.dequeue();//2System.out.println("队列此时长度为:"+q.getLength()); //2q.dequeue();System.out.println("队列此时长度为:"+q.getLength()); //1q.dequeue();//0q.enqueue(4);System.out.println("队列此时长度为:"+q.getLength());//1q.printAll();}}
3、测试结果
队列此时长度为:1队列此时长度为:2队列此时长度为:2队列此时长度为:1队列此时长度为:14
0 0
- 数据结构系列之循环队列
- 数据结构之循环队列
- 数据结构之循环队列
- 数据结构之循环队列
- 数据结构之循环队列
- 数据结构之循环队列
- 数据结构之循环队列
- 数据结构之循环队列
- 数据结构之循环队列
- 数据结构 之 循环队列
- 数据结构之循环队列
- 数据结构之循环队列
- 数据结构之循环队列
- 数据结构与算法系列-队列-循环队列
- 复习数据结构之循环队列
- 数据结构之循环队列操作
- 数据结构之顺序循环队列
- 数据结构之顺序队列(循环队列)
- c/C++内存分配
- 不安装Oracle客户端,使用PLSQL连接Oracle服务器
- android Graphics:区域(Region)
- many-tp-one
- Javascript:谈谈JS的全局变量跟局部变量(转zyz511919766)
- 数据结构系列之循环队列
- 6.10 文件转移
- 认识自己——做人要大气魄力,要经得住挑战
- 第13周-阅读项目3-对文本文件的访问
- C实现字符排列
- Table动态增加删除行
- C++打开指定文件夹,并选中文件
- Climbing Stairs
- 6.5 UITabBarController