队列概念

队列(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 循环队列的实现相关推荐

  1. java 数据队列_Java 数据结构 - 队列

    Java 数据结构 - 队列 我们今天要讲的数据结构是队列,比如 Java 线程池任务就是队列实现的. 1. 什么是队列 和栈一样,队列也是一种操作受限的线性结构.使用队列时,在一端插入元素,而在另一 ...

  2. java 循环关键字_Java循环结构_常量_关键字

    一.循环 定义:当满足一定条件的时候,重复执行某一段代码的操作 while.for.do...while是Java的循环 二.While循环 语法格式: int i = 0://初始化值 while( ...

  3. java 手写阻塞队列_Java阻塞队列的实现

    阻塞队列与普通队列的区别在于,当队列是空的时,从队列中获取元素的操作将会被阻塞,或者当队列是满时,往队列里添加元素的操作会被阻塞.试图从空的阻塞队列中获取元素的线程将会被阻塞,直到其他的线程往空的队列 ...

  4. java循环使用范围_Java循环流程控制语句

    7 循环流程控制语句 7.1 for循环的格式及基本使用 7.1.1 for循环语句格式: for(初始化语句;判断条件语句;控制条件语句){ 循环体语句; } 7.1.2 循环的执行流程图: 案例: ...

  5. java的队列_java实现队列

    队列是一种重要的数据结构,在排队论和算法设计中有很重要的应用,其实队列也是一种链表,它只允许在表的始端出表(dequeue),在表的末端入表(enqueue),下边是队列的java实现. //队列是一 ...

  6. java两个线程循环打印_java循环打印 多线程

    问题描述 Java多线程,循环打印"我是多线程"10次. 思路: 1 开启5个线程 "我" "是" "多" " ...

  7. java 消息队列_java消息队列

    Java消息服务(Java Message Service,JMS)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信. ...

  8. java 栈队列_java 栈 队列实现

    1.栈(stack) 栈是后进先出的(LIFO) 策略的集合类型. 基本API push(item) 添加一个元素 item pop(item)) 删除并返回一个元素 isEmpty 栈是否为空 si ...

  9. java的循环条件_Java循环和条件

    下列程序的输出结果是什么? 1.Java循环和条件 /** * @Title:IuputData.java * @Package:com.you.data * @Description:TODO * ...

最新文章

  1. 【学习笔记】17、函数(Function)的定义和调用
  2. NLP研究者必备的语言学书籍!
  3. Git和GitHub 总结
  4. 【Oracle】恢复重做日志组
  5. typescript之hasOwnProperty
  6. Java连接数据库的步骤
  7. Win10 删除网络驱动器
  8. ANSI字符集和Unicode字符集
  9. 阵列卡的全称叫磁盘阵列卡 是用来做 RAID
  10. 【Jersey】Jersey框架介绍与使用
  11. RationalDMIS 2020高级教程之变量写入EXCEL
  12. Linux resolv.conf 简介
  13. 8255芯片控制发光二极管模拟步进电机汇编实验
  14. 联想小新 Air 13 (Pro) 6,7代笔记本安装Win7系统
  15. PC与西门子PLC通讯免费软件Libnodave
  16. 2020.10.29腾讯QQ音乐社招前端电话一面总结
  17. 计算机科学区别于数学和物理学,新编大学计算机基础
  18. 华为临阵换帅,云市场掀起“三国杀”
  19. 【网络通信与信息安全】之深入解析从输入一个URL到页面加载完成的过程
  20. AI视频插帧 附带『视频插帧』工具

热门文章

  1. mysql复制: 一个master对应1个slave
  2. Hadoop Mapreduce分区、分组、二次排序过程详解[转]
  3. linux构建主从域名服务器
  4. 从业回忆录,最后悔的事
  5. 查看Scala编译的.class文件
  6. postgresql 插入 时间戳_数据也玩躲猫猫?PostgreSQL中别人提交的数据,我为什么看不到?...
  7. 高中技校学计算机,我没考上高中,英语数学极差,想上技校学计算机专业,玩代码的那种,有前途吗?...
  8. html语言闪烁特效代码,css3 文字闪烁特效代码
  9. php生成图片水印,PHP生成图片加文字及图案水印办法
  10. [转载] 【Java】将一个字符串的字符排序,按ASCII表的顺序从小到大