队列
队列数据顺序是先进先出,后进后出.
队列添加数据的方式很特别,传统意义上的队列,删除或者添加数据时,后面或者前面的所有的数据会
依次移动一位。但是这样效率会很低。所以队列的数据排列上会在数组的前端空出几个缓冲位置,这样当
操作队列的时候只需要移动指针,而不需要操作整个队列。
class Queue{
private int maxSize;
private long[] queArray;
private int front;
private int rear;
private int nItems;
public Queue(int s){
maxSize = s;
queArray = new long[maxSize];
front = 1;
rear = -1;
nItems = 0;
}
//像队列中插入新的数据
public void insert(long j){
//判断队列是否已满
if(!isFull()){
/**如果队列尾部已到数组界,则将尾部的指针移至数组开始端的空位置。
* 称为“这段的序列”。
**/
if(rear == maxSize-1){
rear = -1;
queArray[++rear] = j;
nItems++;
}
}
}
//删除,队列的删除是先删除最先进入队列的数据,也就是队列的头数据
//这里删除操作和栈的操作是相同的,数据并没有真正的删除,
//只是将队列头指针移动,数据还是存在的。
public long remove(){
//移动指针
long temp = queArray[front++];
if(front == maxSize){
front = 0;
}
//数据数量
nItems--;
return temp;
}
//返回队列头指针指向的数据
public long peekFornt(){
return queArray[front];
}
//判断是否为空
public boolean isEmpty(){
return nItems == 0;
}
//是否已满
public boolean isFull(){
return nItems == maxSize;
}
public int size(){
return nItems;
}
}
分享到:
相关推荐
### 队列基础知识与循环队列概念 队列是一种线性数据结构,遵循先进先出(FIFO)原则,即最先加入队列的元素将会最先被移除。...掌握队列的使用和BFS算法,对于深入理解计算机科学中的图理论及其应用具有重要意义。
### 关于栈、队列和数组的初步认识 本文旨在为初学者提供关于栈、队列和数组的基础知识,特别是针对那些对C++/C语言有一定了解的学习者。通过本篇内容,读者能够建立起对这些基本数据结构的概念,并掌握它们的基本...
首先,我们需要理解消息队列(Message Queue)的基本概念。消息队列是一种基于发布/订阅模式的通信机制,它允许应用程序之间通过发送和接收消息进行通信,而无需直接调用彼此。这种解耦使得系统更具可扩展性和可靠性...
维护资源状态的可用性最后,文档提供了AQS源码的初步分析,突出了其设计和实现的关键部分,如等待队列节点类Node的定义综合来看,文章为Java开发者提供了对AQS及其在ReentrantLock中应用的详细理解,是探索Java并发...
在初步设计中,可以实现简单的先来先服务(FCFS)或短作业优先(SJF)调度算法,然后逐步优化到更复杂的调度策略,如多级反馈队列。这需要对上下文切换和调度器的性能有深入理解。 此外,操作系统还需要提供设备驱动...
数据结构是算法的载体,如数组、链表、栈、队列、树、图等,它们为算法提供了高效操作数据的方式。理解不同数据结构的特点和用途,对于选择合适算法至关重要。 在"算法初步课件大全"中,每个主题都会通过实例、...
技能目标则是让学生能够掌握分合队走、裂并队走,并能初步学会使用队列口令,同时改善身体姿态;情感目标则着重于培养学生的团队精神,增强自我展示的信心,并加深对纪律重要性的理解。这三个目标不仅涵盖了体育技能...
在这一环节中,学生不仅学会了如何进行两位数乘两位数的估算,而且通过实际操作和互相讨论,培养了初步的估算能力和解决问题的能力。这对于提升学生独立思考和判断的能力具有重要意义。 接着,教学的重点落在了竖式...
本资料"算法初步练习题.rar"提供了一份专门针对算法初学者的练习集,通过一系列精心设计的问题,帮助学习者巩固和深化对算法的理解。 1. **排序算法**:练习题中可能会涵盖各种经典的排序算法,如冒泡排序、选择...
通过实际的队列表演活动,学生能够将数学知识与现实生活紧密结合,这不仅加深了学生对知识点的理解,而且增强了数学知识的应用能力。 最后,应用问题解决是检验学生学习成果的重要环节。通过教材中的实际问题,如第...
你需要理解进程的生命周期、状态转换(如就绪、运行、阻塞和终止),以及调度算法(如FCFS、SJF、优先级调度和多级反馈队列)。此外,还要了解进程间的通信机制,如管道、信号量、消息队列和共享内存。 除了这些,...
在探讨Android的线程消息机制之前,我们可以通过一个生活中的例子来进行初步的理解。假设有一个隧道,隧道内部可以容纳多辆汽车通行,而这些汽车就像消息一样,按照先后顺序进入隧道,并依次离开。这种先进先出的...
根据提供的文件信息,我们可以提取以下知识点: 1. 数据结构:数据结构是计算机存储、组织...上述知识点概述了文件中提及的技术术语及其相关应用,对于理解数据结构和算法在实际工程领域的应用提供了详细的背景信息。
此外,数据结构和算法的选择也至关重要,例如使用队列来管理用户请求,优先级队列可以优先处理高优先级的对话。 自定义多轮对话功能则需要机器人具有一定的上下文理解能力。这通常通过状态管理机制实现,例如使用...
在"chap1_c"中,我们可以推测这是关于队列模拟器的初步章节,可能涵盖了基本概念、基础服务模型的介绍,以及如何构建简单的队列系统模拟。可能还涉及到如何编程实现这些模型,例如使用C语言进行程序设计。 在深入...
在数据分析领域,队列分析可以帮助我们理解用户的行为模式,识别高价值用户群体,预测未来的趋势,以及优化业务流程。 在进行队列分析时,首先我们需要收集数据。在本案例中,我们有30000多个Excel条目,这可能代表...
3. FreeRTOS操作系统:理解其核心概念,如任务、信号量、互斥锁、队列等,以及如何在STM32上移植和配置FreeRTOS。 4. GPIO编程:学习STM32的GPIO寄存器配置,如模式设置、输出类型选择、上下拉电阻配置,以及读写...
5. **算法设计与分析**:在算法初步的学习中,学生需要理解如何将数学问题转化为计算机可执行的步骤,这包括选择合适的数据结构(如数组、栈、队列等)、控制流程(如顺序、选择、循环)和逻辑推理。此外,还需要...