java循环队列配对_循环队列 链式队列 的jJAVA实现
对节点的移除插入删除操作,一定要注意在表头和表尾边界进行处理的过程 出队列时
注意只有一个元素的情况,此时队尾和对头指针应该都为空,别忘了修改队尾指针。
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实现相关推荐
- c语言建立队列(顺序队列、循化队列和链式队列)
c语言建立队列 一.顺序队列 队列的顺序存储结构 顺序队列的讨论 "下溢"现象 "真上溢"现象 "假上溢"现象 二.如何解决"假上 ...
- 数据结构 - 队列简介 及 1个简单的c语言链式队列代码实现
1. 队列的定义 所谓队列(queue)就是一种能实现"先进先出"的一种线性存储结构. 跟栈有点类似, 例如栈只有1个出入口, 任何元素进入或者离开栈都必须经过同1个出入口(栈顶 ...
- c语言队列(顺序队列,循环队列,链式队列)
顺序队列 1.初始化: front=-1; rear=-1; 2.判空条件 font=rear; 3.队列已满条件 rear=max-1; 代码: #include<stdio.h> #i ...
- 链队列的基本运算java_链式队列基本操作的实现问题
问题描述:用链式存储方式实现队列的基本操作 涉及变量:front:Node型自定义变量,指向队首元素 rear:Node型自定义变量,指向队尾元素 涉及教材:<数据结构--Java语言描述(第2 ...
- 数据结构——链式队列解析(C语言版)
摘自:数据结构学习--链式队列解析(C语言版) 作者:正弦定理 发布时间:2020-11-26 21:07:08 网址:https://blog.csdn.net/chinesekobe/articl ...
- 链式队列,队列篇(链式队列的出队入队操作)
数据结构,队列篇(链式队列) 前言: 上一篇博主简单讲解了顺序队列和循环队列,今天讲解队列最后一篇链式队,链式队在数据结构中用到比较多,用来做一些排队的算法,还有链式队列是也是和链式栈一样采用链表的方 ...
- 【数据结构】链式队列的实现(C语言)
队列的链式存储称为链式队列.链式队列就是一个特殊的单链表,对于这种特殊的单链表,它的插入和删除操作规定在单链表的不同端进行.链式队列的队首和队尾指针分别用front和rear表示. 链式队列要掌握以下 ...
- c语言定义链式队列用菜单,数据结构之---C语言实现链式队列
//链式队列的存储 //杨鑫 #include #include typedef int QElemType; //定义节点 typedef struct QNode { QElemType data ...
- 链式队列的基本操作(入队、出队、遍历队列、清空队列)
链式队列是一种特殊的链表,只能在尾部添加,在头部删除,类似于排队问题,先入先出 代码如下 #include<stdio.h> #include<malloc.h> #inclu ...
最新文章
- excel 用VBA将所有单元格内容全部转换为文本
- 扑克牌排序_巧用扑克牌搞定孩子的数学思维启蒙,聪明的妈妈都在玩这样的游戏...
- redis 公网ip访问_Redis很重要,怎么只允许指定IP访问?
- 56秒看完131年英格兰顶级联赛冠军排行:利物浦时隔30年再夺冠
- spring aop源码分析总结
- 极品抓鸡教程36课笔记
- AT24C32、AT24C64、AT24C128、AT24C256、AT24C512系列EEPROM芯片单片机读写驱动程序
- html的国际标准智商测试,国际标准智商测试题
- Linux eBPF内核源码sample/bpf全网最细解析(一)
- Netty In Action中文版 - 第一章:Netty介绍
- Oracle REST Data Services(ORDS)-通过REST接口操作Oracle数据库
- 三防产品外观设计要点
- 使用Swagger管理API
- UNIX环境高级编程-环境配置
- 优麒麟 配置java_Ubuntu Kylin 优麒麟 安装部署Pentaho
- 浅谈通用的字典表结构设计
- adreno性能天梯图_深度学习之GPU显卡性能天梯图
- 【论文写作】word中如何在双栏排版中插入单栏排版内容
- DLT645电力规约网关BL110应用之55:实现电力行业 DT/L645 接入金鸽Modbus云平台
- 2008年超级计算机排名,2008年9月16日,我国首台超百万亿次超级计算机曙光5000A在天津下...