java循环队列_Java 循环队列的实现
队列概念
队列(Queue)是限定只能在一端插入、另一端删除的线性表。允许删除的一端叫做队头(front),允许插入的一端叫做队尾(rear),没有元素的队列称为“空队列”。
队列具有先进先出(FIFO)的特性。
普通顺序队列存在的问题
在普通顺序队列中,入队的操作就是先将尾指针rear右移一个单位,然后将元素值赋值给rear单位。出队时,则是头指针front后移一个单位。像这样进行了一定数量的入队和出队操作后,可能会出现这样的情况:
尾指针rear已指到数组的最后有一个元素,即rear==MaxLen-1,此时若再数组的前面部分可能还有很多闲置空间,即这种溢出并非是真的没有可用的存储空间,故称这种溢出现象为“假溢出”。显然,必须要解决这一块假溢出的问题,否则顺序队列就没有太多使用价值。
循环队列
循环队列的存储结构,头、尾指针都和普通顺序队列相同。不同的只是将队列视为“环状结构”,即data[0]为紧接着data[MaxLen-1]的单元,为相邻的元素,首位成为一个环。结构如下:
(来自:百科)
代码实现
全局变量:定义队列长度
static int MaxLen;
循环队列基本数据结构的实现:
static classmyQueue{intfront;intrear;intqueueList[];publicmyQueue() {//TODO Auto-generated constructor stub
queueList=new int[MaxLen];
front=0;
rear=0;
}
}
判空函数
public booleanisEmpty() {if(front==rear){return true;
}return false;
}
判满函数
public booleanisFull(){if(((rear+1)%MaxLen)==front){return true;
}else{return false;
}
}
取队头元素
public void queueFront(intgetFront){if(isEmpty()==false){
getFront=queueList[(front+1)%MaxLen];
}else{
System.out.println("ERROR:Queue is Empty");return;
}
}
入队
public void enQueue(intenData) {if(isFull()==false){
rear=(rear+1)%MaxLen;this.queueList[rear]=enData;
}else{
System.out.println("ERROR:Queue is Full");return;
}
}
出队
public voidoutQueue() {if(isEmpty()==false){
front=(front+1)%MaxLen;
}else{
System.out.println("ERROR:Queue is Empty");return;
}
}
java循环队列_Java 循环队列的实现相关推荐
- java 数据队列_Java 数据结构 - 队列
Java 数据结构 - 队列 我们今天要讲的数据结构是队列,比如 Java 线程池任务就是队列实现的. 1. 什么是队列 和栈一样,队列也是一种操作受限的线性结构.使用队列时,在一端插入元素,而在另一 ...
- java 循环关键字_Java循环结构_常量_关键字
一.循环 定义:当满足一定条件的时候,重复执行某一段代码的操作 while.for.do...while是Java的循环 二.While循环 语法格式: int i = 0://初始化值 while( ...
- java 手写阻塞队列_Java阻塞队列的实现
阻塞队列与普通队列的区别在于,当队列是空的时,从队列中获取元素的操作将会被阻塞,或者当队列是满时,往队列里添加元素的操作会被阻塞.试图从空的阻塞队列中获取元素的线程将会被阻塞,直到其他的线程往空的队列 ...
- java循环使用范围_Java循环流程控制语句
7 循环流程控制语句 7.1 for循环的格式及基本使用 7.1.1 for循环语句格式: for(初始化语句;判断条件语句;控制条件语句){ 循环体语句; } 7.1.2 循环的执行流程图: 案例: ...
- java的队列_java实现队列
队列是一种重要的数据结构,在排队论和算法设计中有很重要的应用,其实队列也是一种链表,它只允许在表的始端出表(dequeue),在表的末端入表(enqueue),下边是队列的java实现. //队列是一 ...
- java两个线程循环打印_java循环打印 多线程
问题描述 Java多线程,循环打印"我是多线程"10次. 思路: 1 开启5个线程 "我" "是" "多" " ...
- java 消息队列_java消息队列
Java消息服务(Java Message Service,JMS)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信. ...
- java 栈队列_java 栈 队列实现
1.栈(stack) 栈是后进先出的(LIFO) 策略的集合类型. 基本API push(item) 添加一个元素 item pop(item)) 删除并返回一个元素 isEmpty 栈是否为空 si ...
- java的循环条件_Java循环和条件
下列程序的输出结果是什么? 1.Java循环和条件 /** * @Title:IuputData.java * @Package:com.you.data * @Description:TODO * ...
最新文章
- 【学习笔记】17、函数(Function)的定义和调用
- NLP研究者必备的语言学书籍!
- Git和GitHub 总结
- 【Oracle】恢复重做日志组
- typescript之hasOwnProperty
- Java连接数据库的步骤
- Win10 删除网络驱动器
- ANSI字符集和Unicode字符集
- 阵列卡的全称叫磁盘阵列卡 是用来做 RAID
- 【Jersey】Jersey框架介绍与使用
- RationalDMIS 2020高级教程之变量写入EXCEL
- Linux resolv.conf 简介
- 8255芯片控制发光二极管模拟步进电机汇编实验
- 联想小新 Air 13 (Pro) 6,7代笔记本安装Win7系统
- PC与西门子PLC通讯免费软件Libnodave
- 2020.10.29腾讯QQ音乐社招前端电话一面总结
- 计算机科学区别于数学和物理学,新编大学计算机基础
- 华为临阵换帅,云市场掀起“三国杀”
- 【网络通信与信息安全】之深入解析从输入一个URL到页面加载完成的过程
- AI视频插帧 附带『视频插帧』工具
热门文章
- mysql复制: 一个master对应1个slave
- Hadoop Mapreduce分区、分组、二次排序过程详解[转]
- linux构建主从域名服务器
- 从业回忆录,最后悔的事
- 查看Scala编译的.class文件
- postgresql 插入 时间戳_数据也玩躲猫猫?PostgreSQL中别人提交的数据,我为什么看不到?...
- 高中技校学计算机,我没考上高中,英语数学极差,想上技校学计算机专业,玩代码的那种,有前途吗?...
- html语言闪烁特效代码,css3 文字闪烁特效代码
- php生成图片水印,PHP生成图片加文字及图案水印办法
- [转载] 【Java】将一个字符串的字符排序,按ASCII表的顺序从小到大