队列:队列是一种先进先出的数据结构,它的元素只能在一端增加,该端称为rear,元素的删除只能在另一端进行,这一端称为front.
1.基于数组的实现(循环队列)
public class QueueClass {
private int maxQueueSize;//队列的大小
private int count; //计数器
private int queueFront; //队列的头元素
private int queueRear; //队列的尾元素
private int[] list;
public QueueClass(){
maxQueueSize=100;
queueFront=0;
queueRear=maxQueueSize-1;//队尾初始化为最后一个元素
count=0;
list=new int[maxQueueSize];
}
public void initializeQueue(){
for(int i=queueFront;i<queueRear;i=(i+1)%maxQueueSize){
list[i]=0;
}
queueFront=0;
queueRear=maxQueueSize-1;
count=0;
}
//判断是否为空队列
public boolean isEmptyQueue(){
return count==0;
}
//判断是否为满队列
public boolean isFullQueue(){
return count==maxQueueSize;
}
//取队列的头元素
public int fornt(){
if(isEmptyQueue()){}
return list[queueFront];
}
//取队尾元素
public int back(){
if(isEmptyQueue()){}
return list[queueRear];
}
//入队
public void addQueue(int newElement){
if(isFullQueue()){}
queueRear=(queueRear+1)%maxQueueSize;
count++;
list[queueRear]=newElement;
}
//出队
public void deleteQueue(){
if(isEmptyQueue()){}
count--;
list[queueFront]=0;
queueFront=(queueFront+1)%maxQueueSize;
}
}
2.链式队列
//节点
class QueueNode {
int info;
QueueNode link;
}
public class LinkedQueueClass {
private QueueNode queueFront;//队头
private QueueNode queueRear; //对尾
public void initializeQueue() {
queueFront = null;
queueRear = null;
}
//判断是否为空队列
public boolean isEmptyQueue() {
return queueFront == null;
}
//判断是否为满队列
public boolean isFullQueue() {
return false;
}
//取队列的头元素
public int fornt() {
if (isEmptyQueue()) {}
return queueFront.info;
}
//取队尾元素
public int back() {
if (isEmptyQueue()) {}
return queueRear.info;
}
//入队
public void addQueue(int newElement) {
QueueNode newNode;
newNode = new QueueNode();
newNode.info = newElement;
newNode.link = null;
if (queueFront == null) {
queueFront = newNode;
queueRear = newNode;
} else {
queueRear.link = newNode;
queueRear = queueRear.link;
}
}
//出队
public void deleteQueue() {
if (isEmptyQueue()) {}
queueFront = queueFront.link;
if (queueFront == null)
queueRear = null;
}
}
分享到:
相关推荐
全书内容浅显易懂,利用大量且丰富的图示与范例, 详解复杂的抽象理论,从最基本的数据结构概念开始 说明,再以Java工具加以诠释阵列结构、堆栈、链表 、队列、排序、查找等重要的概念,引领读者抓住重 点轻松进入...
Java作为一种广泛使用的编程语言,提供了丰富的库支持来实现各种数据结构。在这个主题中,我们将深入探讨Java中队列的实现,包括顺序队列(SqQueueCycle)和链队列(LinkQueue)。 1. **队列的基本概念** 队列是一...
本章节介绍了表、栈和队列三种重要的数据结构及其在Java中的实现方式。表作为一种灵活的线性数据结构,既可以基于数组也可以基于链表实现;栈和队列则是具有特定操作规则的特殊表。这些数据结构在算法设计和软件开发...
《数据结构(Java版本)》这本书正是为此目的而编写,旨在将理论与实际编程相结合,通过Java语言来实现各种经典的数据结构。 首先,书中的基础部分会介绍数据结构的基本概念,如数组、链表、栈和队列。数组是最基本...
链队列,顾名思义,是基于链表实现的队列数据结构。队列是一种遵循“先进先出”(FIFO,First In First Out)原则的数据结构,类似于现实生活中的排队等待。在链队列中,元素按照加入的顺序排列,第一个加入的元素被...
Java是一种广泛使用的面向对象的编程语言,具有丰富的库支持,使得在Java中实现数据结构变得既方便又强大。在清华大学出版社出版的朱站立编著的《数据结构》一书中,作者深入浅出地讲解了数据结构的基本概念、设计与...
### Java基础复习笔记06数据结构-队列 在计算机科学中,数据结构是存储、组织数据的一种方式,使得我们能够高效地访问和修改数据。队列(Queue)是一种线性数据结构,遵循先进先出(FIFO, First In First Out)原则...
线性表、栈和队列是数据结构中最基础且广泛使用的三种结构,它们在各种应用程序中都有重要应用。下面将详细讨论这些概念以及JWArray和JWList库在实现这些数据结构时的细节。 首先,线性表是一种基本的数据结构,由n...
在这个Java队列实现的数据结构作业练习中,我们将会探讨如何使用Java来创建一个简单的队列,并分析`Queue.java`和`Node.java`这两个文件可能包含的内容。 首先,`Queue.java`很可能是实现队列接口或类的文件。在...
Java队列模拟实现是一个典型的计算机科学中的数据结构应用,它主要涉及了Java编程语言和队列数据结构。在这个工程中,开发者已经创建了一个基于图形用户界面(GUI)的应用程序,用于演示和操作队列的各种功能。以下...
在计算机科学中,栈(Stack)和队列(Queue)是两种基础的数据结构。栈是一种后进先出(LIFO, Last In First Out)的数据结构,它允许在一端(称为栈顶)进行插入和删除操作。而队列则是一种先进先出(FIFO, First ...
队列是一种先进先出(FIFO)的数据结构。 - **ImplementQueueusingStacks** - 描述:仅使用栈实现队列的所有功能。 - 关键技术:使用两个栈,一个用于入队操作,另一个用于出队操作。 ### 二叉树 二叉树是非线性...
《计算机科学丛书·数据结构从应用到实现(Java版)》系统地介绍了数据结构以及数据结构与对象之间的联系。主要内容包括:算法效率的输入规模、阶和大O,数据结构的无序和有序列表,队列和栈基于数组和链表的设计实例...
叶核亚的《数据结构(java版)第4版》是一本专门针对Java程序员的数据结构教程,旨在帮助读者深入理解这些概念并应用到实际编程中。 该书涵盖了广泛的数据结构类型,包括数组、链表、栈、队列、集合、映射、树(如...
在本篇讨论中,我们将深入理解两种不同的编程问题,它们都涉及到栈与队列的数据结构,以及如何在Java中高效地解决这些问题。首先,我们来看第一个题目,"剑指 Offer 59 - I. 滑动窗口的最大值"。 滑动窗口的最大值...
队列是一种重要的线性数据结构,它遵循先进先出(FIFO)的规则,即最先插入的元素将最先被移除。在计算机科学中,队列广泛应用于各种算法和程序设计中,尤其在处理需要顺序处理任务的场景下。在Java中,队列可以借助...
### Java基础数据结构—队列 #### 一、队列的概念与特性 队列是一种特殊类型的线性表,它的特点是先进先出(FIFO,First In First Out)。我们可以将其想象成现实生活中的排队情景,比如排队购买火车票时,最早...
在这个主题中,我们将深入探讨Java实现的三种基本数据结构:堆栈(Stack)、队列(Queue)和列表(List)。这些概念是计算机科学的核心部分,对理解和解决复杂问题至关重要。 1. **堆栈(Stack)**: - 堆栈是一种...