普通队列
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。在队列这种数据结构中,最先插入的元素将是最先被删除的元素;反之最后插入的元素将是最后被删除的元素,因此队列又称为“先进先出”(FIFO—first in first out)的线性表。
package com.algorithm; /** * 普通队列 * @author lenovo *队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作, *和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。 *在队列这种数据结构中,最先插入的元素将是最先被删除的元素;反之最后插入的元素将是最后被删除的元素, *因此队列又称为“先进先出”(FIFO—first in first out)的线性表。 */ public class MyQueue { /** * 底层使用数据 */ private long[] attr; /** * 有效数据的大小 */ private int elements; /** * 队头 */ private int front; /** * 队尾 */ private int end; /** * 默认构造方法 */ public MyQueue(){ attr =new long[10]; elements =0; front =0; end =-1; } /** * 带参数构造方法,初始化队列大小 */ public MyQueue(int maxsize){ attr =new long[maxsize]; elements =0; front =0; end =-1; } /** * 添加数据,插入到队尾 * @param value */ public void intsert(long value){ attr[++end]=value; elements++; } /** * 删除数据,从对头开始 */ public long remove(){ elements--; return attr[front++]; } /** * 查看数据 */ public long peek(){ return attr[front]; } /** * 判断是否为空 * @return */ public boolean isEmpety(){ return elements==0; } /** * 判断是否满了 * @return */ public boolean isFull(){ return elements==attr.length; } public static void main(String[] args) { MyQueue mq = new MyQueue(4); mq.intsert(23); mq.intsert(45); mq.intsert(13); mq.intsert(1); System.out.println(mq.isFull()); System.out.println(mq.isEmpety()); System.out.println(mq.peek()); System.out.println(mq.peek()); while (!mq.isEmpety()) { System.out.print(mq.remove()+" "); } mq.intsert(23); } }
循环队列
为充分利用向量空间,克服"假溢出"现象的方法是:将向量空间想象为一个首尾相接的圆环,并称这种向量为循环向量。存储在其中的队列称为循环队列(Circular Queue)。
package com.algorithm; /** * 循环队列 * @author lenovo *为充分利用向量空间,克服"假溢出"现象的方法是:将向量空间想象为一个首尾相接的圆环, *并称这种向量为循环向量。存储在其中的队列称为循环队列(Circular Queue)。 */ public class MyCycleQueue { /** * 底层使用数据 */ private long[] attr; /** * 有效数据的大小 */ private int elements; /** * 队头 */ private int front; /** * 队尾 */ private int end; /** * 默认构造方法 */ public MyCycleQueue(){ attr =new long[10]; elements =0; front =0; end =-1; } /** * 带参数构造方法,初始化队列大小 */ public MyCycleQueue(int maxsize){ attr =new long[maxsize]; elements =0; front =0; end =-1; } /** * 添加数据,插入到队尾 * @param value */ public void intsert(long value){ if (end==attr.length-1) { end=-1; } attr[++end]=value; elements++; } /** * 删除数据,从对头开始 */ public long remove(){ long value = attr[front++]; if(front==attr.length){ front=0; } elements--; return value; } /** * 查看数据 */ public long peek(){ return attr[front]; } /** * 判断是否为空 * @return */ public boolean isEmpety(){ return elements==0; } /** * 判断是否满了 * @return */ public boolean isFull(){ return elements==attr.length; } public static void main(String[] args) { MyCycleQueue mq = new MyCycleQueue(4); mq.intsert(23); mq.intsert(45); mq.intsert(13); mq.intsert(1); System.out.println(mq.isFull()); System.out.println(mq.isEmpety()); System.out.println(mq.peek()); System.out.println(mq.peek()); while (!mq.isEmpety()) { System.out.print(mq.remove()+" "); } System.out.println(); mq.intsert(23); mq.intsert(13); mq.intsert(122); System.out.println(mq.peek()); while (!mq.isEmpety()) { System.out.print(mq.remove()+" "); } } }
相关推荐
在Java中,我们可以使用数组来实现优先队列。这篇文章将探讨如何利用数组实现优先队列,并通过提供的`PriorityQ.java`文件来深入理解其实现原理。 1. **优先队列基本概念** 优先队列是一种数据结构,它维护了一个...
总结来说,通过Java实现RabbitMQ的工作队列,我们可以利用消息队列的优势来处理耗时任务,提高系统性能。同时,结合消息确认、消息持久化和公平调度等特性,可以确保消息的可靠传递和有效处理。在实际应用中,还需要...
Java队列模拟实现是一个典型的计算机科学中的数据结构应用,它主要涉及了Java编程语言和队列数据结构。在这个工程中,开发者已经创建了一个基于图形用户界面(GUI)的应用程序,用于演示和操作队列的各种功能。以下...
在Java中,队列的实现主要有三种:顺序队列、链式队列和循环队列。下面我们将详细探讨这三种队列的实现方式。 1. **顺序队列**: 顺序队列通常是基于数组实现的。在Java中,我们可以使用ArrayList或LinkedList来...
- Java的`java.util.PriorityQueue`是优先队列的实现,它基于二叉堆(通常是最小堆),满足堆的性质:父节点的优先级总是不小于子节点。 - PriorityQueue支持`add()`、`offer()`、`peek()`、`poll()`等方法,分别...
用Java实现一个队列
JAVA 实现延迟队列的方法 JAVA 实现延迟队列的方法是指在 JAVA 中实现延迟队列的方法,即在特定的延迟时间后触发某个事件,这种机制广泛应用于日常开发的场景中,例如用户登录之后5分钟给用户做分类推送、用户多少...
下面我们将详细探讨如何使用Java实现这样的系统。 首先,我们需要理解队列数据结构。队列是一种先进先出(FIFO,First In First Out)的数据结构,类似于现实生活中的排队。在Java中,我们可以使用`java.util.Queue...
2 队列的Java实现 在Java中,队列的实现通常涉及以下核心操作: - 插入元素(enqueue):在队列的尾部添加新元素。 - 删除元素(dequeue):移除队列头部的第一个元素。 - 查看队首元素(peek):查看但不移除队列...
在这个Java队列实现的数据结构作业练习中,我们将会探讨如何使用Java来创建一个简单的队列,并分析`Queue.java`和`Node.java`这两个文件可能包含的内容。 首先,`Queue.java`很可能是实现队列接口或类的文件。在...
Java 利用 DelayedQueue 实现本地的延迟队列 DelayedQueue 是 Java 中的一种特殊的阻塞队列,它用于存放实现了 Delayed 接口的对象。这种队列是有序的,即队头对象的延迟到期时间最长。 DelayedQueue 能够满足我们...
Java消息队列的简单实现代码 Java 消息队列是一种异步处理机制,主要目的是减少请求响应时间和解耦。消息队列的应用场景非常广泛,例如在用户注册时,服务端收到用户的注册请求后,可以将其他操作放入消息队列中,...
这篇博客"Java实现的线程池、消息队列功能"似乎提供了关于如何在Java中实现这两种功能的源码示例。尽管描述部分为空,但从提供的文件名我们可以推测,`CodeReader.java`和`SourcePathManager.java`可能包含了读取和...
java2里面没有提供标准类对队列的支持,我就编写了一个用java实现的队列类。可以供参考。
本篇文章将探讨如何在Java中使用数组实现一个循环队列,通过阅读《用数组实现的循环队列(java)》这篇博文,我们可以深入理解循环队列的工作原理以及其在实际编程中的应用。 循环队列是队列的一种变体,它巧妙地...
### 使用Vector类(继承)实现先进先出队列类Queue的Java实现 #### 概述 本篇文章将详细介绍如何利用Java中的`Vector`类来实现一个具有先进先出特性的队列类`Queue`。队列是一种特殊的线性表,只允许在一端进行插入...
- **Queue接口**: Java的`Queue`接口定义了队列的基本操作,可以通过实现这个接口来创建自定义的队列实现。 3. **ArrayDeque示例** ```java import java.util.ArrayDeque; public class QueueExample { ...
【Java实现HTTP文件队列下载】教程 在2022年的互联网环境下,高效地下载大量分散的HTTP文件成为了一项必要的技能。本教程将详细讲解如何使用Java语言实现HTTP文件队列下载,以解决手动下载数百乃至数千个文件的难题...
在计算机科学中,队列是一种线性数据结构,遵循“先进先出”(FIFO)的原则,即最早插入的元素最先被删除。...通过这个简单的Java实现,你可以更好地了解链式数据结构的工作原理,并将其应用于其他编程语言和场景。