`
阅读更多

队列:
含义:一个只能在队首进行删除,队尾进行插入的线性表,其特征是先进先出。
链式队列:
入队列:在对位插入
出队列:在对头删除
循环队列:

出现的原因是有可能发生满对列但是他又确实不是满的情况


package com.dataStructure.queue;

import java.util.Arrays;

public class MyQueue {
	private static int DEFAULT_SIZE = 10;
	private int capacity;
	private String[] datas;
	private int front;
	private int rear;
	//default array length to create empty queue
	public MyQueue() {
		this.capacity = DEFAULT_SIZE;
		this.datas = new String[this.capacity];
	}
	
	//create a queue by a initial element
	public MyQueue(String dataItem) {
		this();
		this.datas[0] = dataItem;
		this.rear++;
	}
	
	//create a queue by specified length and an dataItem
	public MyQueue(String dataItem, int specifiedLength) {
		this.capacity = specifiedLength;
		this.datas = new String[this.capacity];
		this.datas[0] = dataItem;
		this.rear++;
	}
	
	//Get Queue Size
	public int getQueueLength(){
		return this.rear - this.front;
	}
	
	//Check queue is empty
	public boolean isEmpty(){
		return this.rear == this.front;
	}
	
	//Insert data 
	public void insertData(String data){
		if(this.rear > this.capacity -1){
			return;
		}
		this.datas[this.rear++] = data;
	}
	
	//Remove from queue
	public String removeData(){
		if(isEmpty())
			return null;
		String oldData = this.datas[this.front];
		this.datas[this.front] = null;
		this.front++;
		return oldData;
	}
	
	public String element(){
		if(isEmpty()){
			return null;
		}
		return this.datas[this.front];
	}
	public void clear(){
		Arrays.fill(this.datas,null);
		front = 0;
		rear = 0;
	}

	public int getCapacity() {
		return capacity;
	}

	public void setCapacity(int capacity) {
		this.capacity = capacity;
	}

	public String[] getDatas() {
		return datas;
	}

	public void setDatas(String[] datas) {
		this.datas = datas;
	}

	public int getFront() {
		return front;
	}

	public void setFront(int front) {
		this.front = front;
	}

	public int getRear() {
		return rear;
	}

	public void setRear(int rear) {
		this.rear = rear;
	}
	
}

 

package com.dataStructure.queue;
/**
 * 循环队列出现的原因是有可能发生满对列但是他又确实不是满的情况
 * 从而为了避免这样的情况发生,导致数据不能插入
 * @author Administrator
 *
 */
public class LoopQueue {
	private static int DEFAULT_SIZE = 10;
	private int capacity;
	private String[] datas;
	private int front;
	private int rear;
	
	//default array length to create empty queue
	public LoopQueue() {
		this.capacity = DEFAULT_SIZE;
		this.datas = new String[this.capacity];
	}
	
	//create a queue by a initial element
	public LoopQueue(String dataItem) {
		this();
		this.datas[0] = dataItem;
		this.rear++;
	}
	
	//create a queue by specified length and an dataItem
	public LoopQueue(String dataItem, int specifiedLength) {
		this.capacity = specifiedLength;
		this.datas = new String[this.capacity];
		this.datas[0] = dataItem;
		this.rear++;
	}
	
	//Check queue is empty
	public boolean isEmpty(){
		return this.rear == this.front && getDatas()[this.rear] == null;
	}
	//Get Queue Size
	public int getQueueLength(){
		if(isEmpty())
			return 0;
		return this.rear > this.front ? this.rear - this.front : this.capacity-(this.front-this.rear);
	}
	//Insert data 
	public void insertData(String data){
		if(this.rear > this.capacity -1 && this.datas[0] != null){
			System.out.println("队列已满");
			return;
		}else if(this.rear == this.front && this.datas[this.front] != null){
			System.out.println("队列已满");
			return;
		}else if(this.rear > this.capacity -1 && this.datas[0] == null){
			this.rear = 0;
		}
		this.datas[this.rear] = data;
		rear++;
	}
	//Remove from queue
	public String removeData(){
		if(isEmpty())
			return null;
		String oldData = this.datas[this.front];
		this.datas[this.front] = null;
		this.front++;
		return oldData;
	}
	
	public String element(){
		if(isEmpty()){
			return null;
		}
		return this.datas[this.front];
	}
	public int getCapacity() {
		return capacity;
	}
	public void setCapacity(int capacity) {
		this.capacity = capacity;
	}
	public String[] getDatas() {
		return datas;
	}
	public void setDatas(String[] datas) {
		this.datas = datas;
	}
	public int getFront() {
		return front;
	}
	public void setFront(int front) {
		this.front = front;
	}
	public int getRear() {
		return rear;
	}
	public void setRear(int rear) {
		this.rear = rear;
	}
	
}

 

package com.dataStructure.queue;

public class Test {
	public static void main(String[] args) {
//		MyQueue queue = new MyQueue();
		LoopQueue queue = new LoopQueue();
		String book = "Java";
		String star = "Briteny Spears";
		String country = "China";
		String state = "Califonia";
		String name = "Tony";
		String name1 = "Tony1";
		String name2 = "Tony2";
		String name3 = "Tony3";
		String name4 = "Tony4";
		String name5 = "Tony5";
		String name6 = "Tony6";
		queue.insertData(book);
		queue.insertData(star);
		queue.insertData(country);
		queue.insertData(state);
		queue.insertData(name);
		queue.insertData(name1);
		queue.insertData(name2);
		queue.insertData(name3);
		queue.insertData(name4);
		queue.insertData(name5);
		queue.removeData();
		queue.removeData();
		queue.insertData(name6);
		queue.insertData(star);
		queue.removeData();
		queue.insertData(star);
		queue.insertData(star);
		System.out.println("Fornt :"+queue.getFront());
		System.out.println("Rear :"+queue.getRear());
		System.out.println(queue.getQueueLength());
	}
}

 
 

  • 大小: 66.7 KB
分享到:
评论

相关推荐

    数据结构---队列的应用--c实现

    ### 数据结构——队列的应用与C语言实现 #### 背景介绍 本文将通过一个经典的算法问题“农夫过河”来探讨队列在实际编程中的应用,并使用C语言进行实现。这个问题不仅考验对数据结构的理解,还涉及到位运算等计算机...

    数据结构-队列实验报告.docx

    数据结构-队列实验报告 本实验报告的主要目标是设计和实现一个队列数据结构,包括链队列、顺序队列和循环队列三个部分。通过对每种队列的设计和实现,学生可以更好地理解队列的基本操作和实现原理。 一、需求分析 ...

    数据结构-队列的定义及基本操作(代码+报告)

    根据给定文件的信息,我们可以详细地探讨队列这一数据结构及其基本操作,特别是关于循环队列的实现方式。 ### 数据结构-队列的定义及基本操作 #### 一、队列的基本概念 队列是一种线性表,它遵循先进先出(First ...

    数据结构-队列的实现代码(C语言版).rar

    数据结构 -- C语言版 -- 队列的部分实现代码,详细介绍参考数据结构--队列的系列博文。链接为:https://blog.csdn.net/songshuai0223/category_9742561.html。

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

    Java基础复习笔记06数据结构-队列,详细介绍了队列的知识

    基于C语言的数据结构-队列queue

    在本主题“基于C语言的数据结构-队列queue”中,我们将深入探讨如何在C语言中实现队列的数据结构。 队列的基本操作包括: 1. **入队**(Enqueue):将元素添加到队列的末尾。 2. **出队**(Dequeue):移除并返回...

    算法与数据结构-队列第3章2.ppt

    算法与数据结构-队列第3章2.ppt

    数据结构-队列介绍

    队列是数据结构中的一种,它的特点是先进先出(FIFO,First-In-First-Out)。队列的使用在程序设计中非常普遍,能够处理多种实际问题,例如在图形处理中进行广度优先搜索、实现优先队列、操作系统的工作调度等。 ...

    4.C-数据结构-队列

    4.C_数据结构_队列

    Java语言编写的数据结构-队列实现

    队列是一种线性数据结构,遵循“先进先出”(FIFO,First In First Out)原则。它类似于现实生活中的排队等待,新进来的元素添加到队尾(enqueue),而最早进入的元素从队头(dequeue)移除。队列常用于任务调度、...

    数据结构-队列实现银行排队

    数据结构——队列实现银行排队

    数据结构-队列-事件驱动编程

    本文将详细解析如何利用数据结构中的队列来实现事件驱动编程,并结合给定的“银行排队”场景进行具体阐述。 首先,我们要理解事件驱动编程的核心概念。在事件驱动编程中,程序的执行不依赖于线性的代码流程,而是由...

    数据结构-队列实验报告.pdf

    数据结构中的队列是一种线性数据结构,它遵循“先进先出”(FIFO, First In First Out)的原则。在本实验中,我们探讨了如何使用C语言实现一个基于数组的循环队列。 循环队列是一种特殊的队列,它通过将数组的最后...

    数据结构-队列顺序存储

    在众多的数据结构中,队列是一种基础且重要的结构,它遵循“先进先出”(FIFO, First In First Out)的原则。本文将深入探讨队列的顺序存储方式及其在C语言中的实现。 顺序队列,顾名思义,是用数组来实现的队列。...

    java基础数据结构-队列

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

    漫话数据结构-队列的定义.pptx

    其中,队列作为一种基础且广泛应用的数据结构,其“先进先出”(FIFO)的原则,如同流水线上的工件,保证了数据处理的顺序性和公平性。队列的定义,虽然简单,却在计算机科学的各个领域发挥着巨大的作用,下面我们来...

Global site tag (gtag.js) - Google Analytics