对节点的移除插入删除操作,一定要注意在表头和表尾边界进行处理的过程 出队列时

注意只有一个元素的情况,此时队尾和对头指针应该都为空,别忘了修改队尾指针。

class CircleQueue

{

private final int DEFAULTCAPACITY=4;

private T[]array;

private int head;

private int tail;

private int size;

private int currentCapacity;

public CircleQueue()

{

array=(T[])new Object[DEFAULTCAPACITY];

head=0;

currentCapacity=DEFAULTCAPACITY;

tail=0;

}

public int size()

{

return size;

}

public T front()

{

if(isEmpty())

return null;

return array[head];

}

public boolean isEmpty()

{

if(head==tail)

return true;

return false;

}

public boolean isFull()

{

if((tail+1)%currentCapacity==head)

return true;

return false;

}

public void enqueue(T a)

{

if(isFull())

return ;

array[tail++]=a;

tail=tail%currentCapacity;

size++;

}

public T dequeue()

{

if(isEmpty())

return null;

size--;

T a= array[head++];

head=head%currentCapacity;

return a;

}

}

/**

* 本结构体链表为双向链表

*

*/

class LinkedQueue{

private static class Node{

private T e;

private Node pre;

private Node next;

public Node(T e,Node pre,Node next)

{

this.e=e;

this.pre=pre;

this.next=next;

}

}

private Node head;

private Node tail;

private int size;

public LinkedQueue()

{

head=new Node(null,null,null);

tail=head;

size=0;

}

public boolean isEmpty()

{

if(size==0)

return true;

return false;

}

public int size()

{

return size;

}

public T front()

{

if(isEmpty())

return null;

return head.e;

}

public T dequeue()

{

if(isEmpty())

return null;

T a=head.e;

head=head.next;

if(size==1)

tail=head;

size--;

return a;

}

public void enqueue(T e)

{

tail=new Node(e,tail,null);

if(size==0)

head=tail;

size++;

tail.pre.next=tail;

}

}

public class Queue {

public static void main(String args[])

{

LinkedQueue a=new LinkedQueue();

a.enqueue(2);

a.enqueue(3);

a.enqueue(4);

a.enqueue(5);

System.out.println(a.size()+" ");

System.out.println(a.dequeue()+" ");

System.out.println(a.size()+" ");

}

}

java循环队列配对_循环队列 链式队列 的jJAVA实现相关推荐

  1. c语言建立队列(顺序队列、循化队列和链式队列)

    c语言建立队列 一.顺序队列 队列的顺序存储结构 顺序队列的讨论 "下溢"现象 "真上溢"现象 "假上溢"现象 二.如何解决"假上 ...

  2. 数据结构 - 队列简介 及 1个简单的c语言链式队列代码实现

    1. 队列的定义 所谓队列(queue)就是一种能实现"先进先出"的一种线性存储结构. 跟栈有点类似,  例如栈只有1个出入口, 任何元素进入或者离开栈都必须经过同1个出入口(栈顶 ...

  3. c语言队列(顺序队列,循环队列,链式队列)

    顺序队列 1.初始化: front=-1; rear=-1; 2.判空条件 font=rear; 3.队列已满条件 rear=max-1; 代码: #include<stdio.h> #i ...

  4. 链队列的基本运算java_链式队列基本操作的实现问题

    问题描述:用链式存储方式实现队列的基本操作 涉及变量:front:Node型自定义变量,指向队首元素 rear:Node型自定义变量,指向队尾元素 涉及教材:<数据结构--Java语言描述(第2 ...

  5. 数据结构——链式队列解析(C语言版)

    摘自:数据结构学习--链式队列解析(C语言版) 作者:正弦定理 发布时间:2020-11-26 21:07:08 网址:https://blog.csdn.net/chinesekobe/articl ...

  6. 链式队列,队列篇(链式队列的出队入队操作)

    数据结构,队列篇(链式队列) 前言: 上一篇博主简单讲解了顺序队列和循环队列,今天讲解队列最后一篇链式队,链式队在数据结构中用到比较多,用来做一些排队的算法,还有链式队列是也是和链式栈一样采用链表的方 ...

  7. 【数据结构】链式队列的实现(C语言)

    队列的链式存储称为链式队列.链式队列就是一个特殊的单链表,对于这种特殊的单链表,它的插入和删除操作规定在单链表的不同端进行.链式队列的队首和队尾指针分别用front和rear表示. 链式队列要掌握以下 ...

  8. c语言定义链式队列用菜单,数据结构之---C语言实现链式队列

    //链式队列的存储 //杨鑫 #include #include typedef int QElemType; //定义节点 typedef struct QNode { QElemType data ...

  9. 链式队列的基本操作(入队、出队、遍历队列、清空队列)

    链式队列是一种特殊的链表,只能在尾部添加,在头部删除,类似于排队问题,先入先出 代码如下 #include<stdio.h> #include<malloc.h> #inclu ...

最新文章

  1. excel 用VBA将所有单元格内容全部转换为文本
  2. 扑克牌排序_巧用扑克牌搞定孩子的数学思维启蒙,聪明的妈妈都在玩这样的游戏...
  3. redis 公网ip访问_Redis很重要,怎么只允许指定IP访问?
  4. 56秒看完131年英格兰顶级联赛冠军排行:利物浦时隔30年再夺冠
  5. spring aop源码分析总结
  6. 极品抓鸡教程36课笔记
  7. AT24C32、AT24C64、AT24C128、AT24C256、AT24C512系列EEPROM芯片单片机读写驱动程序
  8. html的国际标准智商测试,国际标准智商测试题
  9. Linux eBPF内核源码sample/bpf全网最细解析(一)
  10. Netty In Action中文版 - 第一章:Netty介绍
  11. Oracle REST Data Services(ORDS)-通过REST接口操作Oracle数据库
  12. 三防产品外观设计要点
  13. 使用Swagger管理API
  14. UNIX环境高级编程-环境配置
  15. 优麒麟 配置java_Ubuntu Kylin 优麒麟 安装部署Pentaho
  16. 浅谈通用的字典表结构设计
  17. adreno性能天梯图_深度学习之GPU显卡性能天梯图
  18. 【论文写作】word中如何在双栏排版中插入单栏排版内容
  19. DLT645电力规约网关BL110应用之55:实现电力行业 DT/L645 接入金鸽Modbus云平台
  20. 2008年超级计算机排名,2008年9月16日,我国首台超百万亿次超级计算机曙光5000A在天津下...

热门文章

  1. Ubuntu下添加开机启动脚本
  2. linux ntp同步日志,Linux使用入门教程之Rsyslog日志管理、NTP和Rsync备份同步
  3. linux阿帕奇日志文件,Linux下apache日志文件设置
  4. 问题 E: 括号规则
  5. 开箱即用——用这个模板快速统筹企业车辆安排
  6. 专有云传统HSF升级Pandora Boot开发
  7. 如何用钉钉宜搭制定企业疫情防控数字化管理方案?
  8. 字节跳动 Flink 单点恢复功能实践
  9. 剑与远征赏金试炼活动将在13天后结束,工会玩法大家有尝试过吗?
  10. 将表导入到其他用户的impdp命令