---------------------------------------------接口定义----------------------------------

package com.cn.hbut.dao;

public interface Queue {
public void clear();
public int length();
public boolean full();
public boolean empty();
//入队
public boolean enque(Object e);
//出队,需要删除第一个元素
public Object dlque();
//获取队头元素
public Object getf();

}

---------------------------------------------具体的实现--------------------------------

package com.cn.hbut.daoImpl;

import com.cn.hbut.dao.Queue;
/**
 * @author Administrator
 * 循环队列的实现
 */
public class SqQueue implements Queue{
Object [] elem;
int front,rear;
int len;

public SqQueue() {
len =100;
elem = new Object[len];
front=rear=0;
}
public SqQueue(int maxsz) {
len = maxsz;
elem = new Object[len];
front = rear =0;
}

@Override
public void clear() {
front = rear =0;
}

@Override
public int length() {
//循环队列需要考虑全部队满后全部出队,再入队后rear为0,而front为len-1
return (rear-front+len)%len; 
}
@Override
public boolean full() {
return (rear+1)%len==front;
}
@Override
public boolean empty() {
return front==rear;
}
@Override
public boolean enque(Object e) {
if(full()){
return false;
}
elem[rear]=e;
rear = rear+1%len;
return true;
}
//元素出队,删除队首元素
@Override
public Object dlque() {
if(empty()){
return null;
}
Object obj =elem[front];
front = (front+1)%len;
return obj;
}

@Override
public Object getf() {
if(empty()){
return null;
}
return elem[front];
}
//--------------------------------测试循环队列------------------------------
public static void main(String[] args) {
//创建一个循环队列,最多容纳元素数8
SqQueue sque = new SqQueue(8);
//开始入队
sque.enque(1);
sque.enque(2);
sque.enque(3);
sque.enque(4);
System.out.println("队列元素个数:"+sque.length());
System.out.println("队首元素:"+sque.getf());
System.out.println("队列是否为空:"+sque.empty());
System.out.println("队列是否已满"+sque.full());
System.out.println("当前出队的元素:"+sque.dlque());
System.out.println("出队后的队首元素:"+sque.getf());

}

}

测试结果:

队列元素个数:4
队首元素:1
队列是否为空:false
队列是否已满false
当前出队的元素:1
出队后的队首元素:2

数据结构(七)---循环队列的实现---java版相关推荐

  1. java循环的概念_Java数据结构之循环队列简单定义与用法示例

    本文实例讲述了Java数据结构之循环队列简单定义与用法.分享给大家供大家参考,具体如下: 一.概述: 1.原理: 与普通队列的区别在于循环队列添加数据时,如果其有效数据end == maxSize - ...

  2. 基于数组实现循环队列(基于Java实现)

    title: 基于数组实现循环队列(基于Java实现) tags: 数组 循环队列 基于数组实现循环队列的方法原理: 我们在用数组实现队列的时候,发现当tail = n时,就会有数据搬移的操作,这样一 ...

  3. mysql循环队列_数据结构:循环队列

    数据结构:循环队列 写在前面 数组表示的问题 对于队列最好的方法是使用链表实现,因为对于数组来说,队列可能会出现下面这种情况: 如图所示,不可以继续添加元素,否则会造成数组越界而遭致程序出错.然而此时 ...

  4. java环形队列测试,JAVA数据结构之循环队列的实现

    1.循环队列CircleQueue类的实现代码如下所示: public class CircleQueue { private Object[] array; private int capacity ...

  5. 考研数据结构之循环队列

    提示:居上位而不骄,在下位而不忧.故乾坤因其时而惕,虽危无咎矣 文章目录 前言 一.循环队列 1.1定义 1.2 基本操作 1.3 判断条件 1.3.1 队空 1.3.2 队满 1.牺牲一个单元用来区 ...

  6. 【数据结构】循环队列

    循环队列 入队判断是否满. 出队判断是否空 队列的有效空间[head,Tail) 入队列:把新的元素放在tail对应的下标上,同时tail++ o(1) 当Tail到达数组的末尾时,Tail从0开始 ...

  7. C++数据结构:循环队列基本运算的实现

    实验要求 编写一个程序,以菜单形式实现循环队列的各种基本运算,并在此基础上设计一个主程序,完成如下功能: (1)初始化空队列 (2)建立循环队列 (3)入队 (4)出队 (5)判断队列是否为空,为空返 ...

  8. 循环队列的java结构_java数据结构之循环队列(数组实现)

    package com.ws.队列.数组环形队列; //环形数组队列 //判断满:尾+1%队列长度==头 //添加数据:要(尾+1)%数组长度 //取出数据:要(头+1)%数组长度 因为这两个都是循环 ...

  9. PAT 乙级 1008. 数组元素循环右移问题 (20) Java版

    一个数组A中存有N(N>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(M>=0)个位置,即将A中的数据由(A0A1--AN-1)变换为(AN-M -- AN-1 A0  ...

最新文章

  1. 8种Python字符串拼接的方法,你知道几种?
  2. Java开发中Netty线程模型原理解析!
  3. ReactiveStream01
  4. MyBatis】MyBatis一级缓存和二级缓存
  5. 生信宝典之傻瓜式 (五) - 文献挖掘查找指定基因调控网络
  6. 74ls390设计任意进制计数器_利用数字频率合成技术设计高速任意波形发生器(上)...
  7. 戴尔科技集团公布 2019 财年第四季度及全年财报,巨大进步和强劲发展的一年...
  8. Pytorch + LSTM
  9. 算法:两个数之和为目标数Two Sum II - Input array is sorted
  10. Python 贪吃蛇小游戏
  11. kali linux电脑配置要求,Kali Linux下配置PM3运行环境
  12. 四象限运行模式_四象限变频器原理及系统构成
  13. 【下载所有XKCD漫画】 详细解析
  14. 小程序支持HTML标签
  15. 虚拟机匹配合适的服务器,如何为虚拟机选择合适的服务器硬件?
  16. 读书报告1500字计算机大学篇,《活着》读后感_读书心得1500字大学篇
  17. 几个可以免费下载或阅读电子书的网站
  18. 我爱打折网55bbs被网易1800万收购
  19. 标准数据中国省市区+银行支行数据
  20. C语言结构体与结构体指针的使用

热门文章

  1. vue_组件_监听组件事件
  2. 通俗易懂,java8 .stream().map().collect()用法
  3. (最新合集)计算机网络谢希仁第七版 第四章课后答案
  4. 用计算机完成下表的视距测量计算公式,测量学计算题.doc
  5. python虚拟机优化_KVM虚拟机管理及性能优化
  6. linux64位ioremap函数,linux操作系统中的ioremap函数详解
  7. 传统公司部署OpenStack(t版)简易介绍(六)——neutron模块部署
  8. linux笔记之 vi编辑器和用户的配置文件及提权
  9. 快速傅里叶变换_计算物理基础:第八章-快速傅里叶变换(FFT)
  10. 跨计算机建立视图_计算机二级office