`

队列(数据结构--Java版)

阅读更多

    队列:队列是一种先进先出的数据结构,它的元素只能在一端增加,该端称为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语言编写的数据结构-队列实现

    Java作为一种广泛使用的编程语言,提供了丰富的库支持来实现各种数据结构。在这个主题中,我们将深入探讨Java中队列的实现,包括顺序队列(SqQueueCycle)和链队列(LinkQueue)。 1. **队列的基本概念** 队列是一...

    数据结构--表、栈、队列(java)

    本章节介绍了表、栈和队列三种重要的数据结构及其在Java中的实现方式。表作为一种灵活的线性数据结构,既可以基于数组也可以基于链表实现;栈和队列则是具有特定操作规则的特殊表。这些数据结构在算法设计和软件开发...

    数据结构(java版本)

    《数据结构(Java版本)》这本书正是为此目的而编写,旨在将理论与实际编程相结合,通过Java语言来实现各种经典的数据结构。 首先,书中的基础部分会介绍数据结构的基本概念,如数组、链表、栈和队列。数组是最基本...

    数据结构:链队列

    链队列,顾名思义,是基于链表实现的队列数据结构。队列是一种遵循“先进先出”(FIFO,First In First Out)原则的数据结构,类似于现实生活中的排队等待。在链队列中,元素按照加入的顺序排列,第一个加入的元素被...

    数据结构(java描述)

    Java是一种广泛使用的面向对象的编程语言,具有丰富的库支持,使得在Java中实现数据结构变得既方便又强大。在清华大学出版社出版的朱站立编著的《数据结构》一书中,作者深入浅出地讲解了数据结构的基本概念、设计与...

    Java基础复习笔记06数据结构-队列

    ### Java基础复习笔记06数据结构-队列 在计算机科学中,数据结构是存储、组织数据的一种方式,使得我们能够高效地访问和修改数据。队列(Queue)是一种线性数据结构,遵循先进先出(FIFO, First In First Out)原则...

    数据结构-线性表、栈、队列

    线性表、栈和队列是数据结构中最基础且广泛使用的三种结构,它们在各种应用程序中都有重要应用。下面将详细讨论这些概念以及JWArray和JWList库在实现这些数据结构时的细节。 首先,线性表是一种基本的数据结构,由n...

    Java队列实现,数据结构

    在这个Java队列实现的数据结构作业练习中,我们将会探讨如何使用Java来创建一个简单的队列,并分析`Queue.java`和`Node.java`这两个文件可能包含的内容。 首先,`Queue.java`很可能是实现队列接口或类的文件。在...

    java队列模拟实现

    Java队列模拟实现是一个典型的计算机科学中的数据结构应用,它主要涉及了Java编程语言和队列数据结构。在这个工程中,开发者已经创建了一个基于图形用户界面(GUI)的应用程序,用于演示和操作队列的各种功能。以下...

    剑指offer 计划1(栈与队列)---java(csdn)————程序.pdf

    在计算机科学中,栈(Stack)和队列(Queue)是两种基础的数据结构。栈是一种后进先出(LIFO, Last In First Out)的数据结构,它允许在一端(称为栈顶)进行插入和删除操作。而队列则是一种先进先出(FIFO, First ...

    algorithm-essentials-java

    队列是一种先进先出(FIFO)的数据结构。 - **ImplementQueueusingStacks** - 描述:仅使用栈实现队列的所有功能。 - 关键技术:使用两个栈,一个用于入队操作,另一个用于出队操作。 ### 二叉树 二叉树是非线性...

    数据结构-从应用到实现 (java版)

    《计算机科学丛书·数据结构从应用到实现(Java版)》系统地介绍了数据结构以及数据结构与对象之间的联系。主要内容包括:算法效率的输入规模、阶和大O,数据结构的无序和有序列表,队列和栈基于数组和链表的设计实例...

    最新---数据结构(java版)第4版-叶核亚[全套]

    叶核亚的《数据结构(java版)第4版》是一本专门针对Java程序员的数据结构教程,旨在帮助读者深入理解这些概念并应用到实际编程中。 该书涵盖了广泛的数据结构类型,包括数组、链表、栈、队列、集合、映射、树(如...

    剑指offer计划27(栈与队列困难)---java(csdn)————程序.pdf

    在本篇讨论中,我们将深入理解两种不同的编程问题,它们都涉及到栈与队列的数据结构,以及如何在Java中高效地解决这些问题。首先,我们来看第一个题目,"剑指 Offer 59 - I. 滑动窗口的最大值"。 滑动窗口的最大值...

    数据结构-队列(Queue)介绍和Java示例代码

    队列是一种重要的线性数据结构,它遵循先进先出(FIFO)的规则,即最先插入的元素将最先被移除。在计算机科学中,队列广泛应用于各种算法和程序设计中,尤其在处理需要顺序处理任务的场景下。在Java中,队列可以借助...

    java基础数据结构-队列

    ### Java基础数据结构—队列 #### 一、队列的概念与特性 队列是一种特殊类型的线性表,它的特点是先进先出(FIFO,First In First Out)。我们可以将其想象成现实生活中的排队情景,比如排队购买火车票时,最早...

    常用数据结构(堆栈,队列,列表)JAVA代码

    在这个主题中,我们将深入探讨Java实现的三种基本数据结构:堆栈(Stack)、队列(Queue)和列表(List)。这些概念是计算机科学的核心部分,对理解和解决复杂问题至关重要。 1. **堆栈(Stack)**: - 堆栈是一种...

Global site tag (gtag.js) - Google Analytics