`
coolszy
  • 浏览: 1411251 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

队列----循环数组实现队列

 
阅读更多
/**
 * 循环数组实现队列的演示代码
 */
package com.szy.structure.queues;

import java.util.Scanner;

public class CircularArrayQueues {
	private final int SIZE=5;  //数组大小
	private int FRONT; //前端
	private int REAR;  //末端
	private int[] queueArray=null;  //存储队列的数组

	public CircularArrayQueues(){
		FRONT=-1;
		REAR=-1;
		queueArray=new int[SIZE];
	}
	/**
	 * 向队列中插入元素
	 * @param info
	 */
	public void insert(int info){
		//如果栈已经满
		if ((FRONT==0&&REAR==SIZE-1)||(FRONT==REAR+1)) {
			System.out.println("队列已满");
			return;
		}
		//如果栈为空
		if (FRONT==-1) {
			FRONT=0;
			REAR=0;
		}
		else {
			//如果末端已经到达数组末尾
			if (REAR==SIZE-1) {
				REAR=0;
			}
			else {
				REAR++;
			}
		}
		queueArray[REAR]=info;
	}
	/**
	 * 从队列中删除元素
	 */
	public void remove(){
		if (FRONT==-1) {
			System.out.println("空队列!");
			return;
		}
		//如果栈中只有一个元素
		if (REAR==FRONT) {
			REAR=-1;
			FRONT=-1;
		}
		else {
			//如果前端位于数组末尾
			if (FRONT==SIZE-1) {
				FRONT=0;
			}
			else {
				FRONT++;
			}
		}
	}
	/**
	 * 输出栈中元素
	 */
	public void display(){
		if (FRONT==-1) {
			System.out.println("空队列!");
			return;
		}
		int front_position=FRONT;
		int rear_position=REAR;
		System.out.println("队列中元素:");
		if (front_position <= rear_position) {
			while (front_position <= rear_position) {
				System.out.print(queueArray[front_position]+" ");
				front_position++;
			}
		}
		else {
			System.err.println(rear_position);
			while(front_position<SIZE){
				System.out.print(queueArray[front_position]+" ");
				front_position++;
			}
			front_position=0;
			while(front_position<=rear_position){
				System.out.print(queueArray[front_position]+" ");
				front_position++;
			}
		}
		System.out.println("\n");
	}
	
	public static void main(String[] args) throws Exception {
		CircularArrayQueues queues=new CircularArrayQueues();
		int choice=0;
		while(true)
		{
			System.out.println("\n---MENU---");
			System.out.println("1.Insert");
			System.out.println("2.Delete");
			System.out.println("3.Display");
			System.out.println("4.Exit");
			System.out.println("----------");
			System.out.println("请选择:");
			Scanner scanner=new Scanner(System.in);
			choice=scanner.nextInt();
			switch (choice) {
			case 1:
			{
				System.out.println("请输入数字:");
				int input=scanner.nextInt();
				queues.insert(input);
			}
				break;
			case 2:
			{
				queues.remove();
			}
			break;
			case 3:
			{
				queues.display();
			}
			break;
			case 4:
				return;
			default:
				System.err.println("无效的输入!");
				break;
			}
		}
	}
}

 

分享到:
评论

相关推荐

    同步队列-无锁队列-循环数组无锁队列.zip

    配套代码讲解:https://blog.csdn.net/songchuwang1868/article/details/90200251 ...同步队列-无锁队列-循环数组无锁队列 同步队列-无锁队列-循环数组无锁队列 同步队列-无锁队列-循环数组无锁队列

    循环数组实现队列

    循环数组实现队列 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。队列的操作受限制,和栈一样,它是一种操作受限制的线性表。进行插入操作的...

    数组实现循环队列

    java数组实现循环队列。包括入队, 出队,输出队列。 队列先入先出。

    C语言数组-C语言实现使用静态数组实现循环队列.zip

    在本主题中,我们将深入探讨如何使用C语言中的静态数组来实现一个循环队列。循环队列是一种线性数据结构,它巧妙地利用了数组的特性,克服了普通队列在满时无法插入元素、空时无法删除元素的问题。 首先,了解数组...

    循环链表队列 循环数组队列的代码实现

    ### 循环链表队列与循环数组队列的代码实现解析 在计算机科学中,队列是一种重要的数据结构,遵循先进先出(FIFO)原则。队列可以使用多种方式实现,包括链表和数组。本文将深入探讨两种队列实现方式:循环链表队列...

    算法-理论基础- 队列- 循环队列(包含源程序).rar

    通过阅读《算法-理论基础- 队列- 循环队列(包含源程序).pdf》这份文档,你可以深入理解循环队列的原理,并通过源代码实践加深对这一数据结构的掌握。这份文档可能会涵盖循环队列的理论介绍、示例演示以及完整的C/...

    用数组实现的循环队列(java)

    本篇文章将探讨如何在Java中使用数组实现一个循环队列,通过阅读《用数组实现的循环队列(java)》这篇博文,我们可以深入理解循环队列的工作原理以及其在实际编程中的应用。 循环队列是队列的一种变体,它巧妙地...

    用数组实现一个循环队列

    这个实现中,队头和队尾的指针都是模容量运算的,确保了在循环数组中的正确索引。当队列为空时,队头和队尾指针相同;当队列已满时,队尾加1后等于队头。 通过这样的C++代码,我们可以创建并管理一个循环队列,有效...

    数组实现循环队列(有bug版)

    ### 数组实现循环队列(有bug版) #### 概述 本文档主要介绍了一种基于数组实现的循环队列的代码实现,并对该代码进行了分析,指出了其中存在的问题及可能的原因。 #### 循环队列简介 循环队列是一种特殊的数据...

    android NDK实现的Hanlder-消息队列-native多线程实例

    这通常是一个队列,可以使用链表或数组实现。每个消息应该包含目标Handler的引用(在NDK中可能是指针)和要执行的操作。消息的添加和删除操作需要是线程安全的,因此可能需要使用互斥锁(mutex)或条件变量...

    队列数组实现

    ### 队列数组实现 #### 概述 在计算机科学中,队列是一种非常基本的数据结构,它遵循先进先出(FIFO)的原则。队列可以被用来解决多种问题,比如任务调度、缓存管理等。队列可以通过多种方式实现,其中一种常见的...

    数组循环队列.rar

    数组循环队列相比于普通数组队列的主要优势在于它可以更有效地处理满和空的情况。在普通数组队列中,一旦队列满或空,需要进行数组的重新分配,而循环队列则避免了这个过程,提升了性能。 在编程语言中,如C、C++、...

    队列代码 循环数组 自编的

    ### 队列数据结构与循环数组实现 #### 一、队列基本概念 队列是一种先进先出(First In First Out, FIFO)的数据结构,主要用于处理需要按顺序执行的任务集合。在计算机科学中,队列被广泛应用于操作系统任务调度...

    数据结构实验报告2-栈与队列-队列基本操作算法-实验内容及要求.docx

    - 采用队头/队尾间隔至少一个空闲元素的方法实现循环队列,这样可以避免队列的物理连续性与逻辑连续性的混淆,同时便于检测队列是否为空或满。 - 当队列为满时尝试执行入队操作,或者队列为时空执行出队操作时,...

    循环数组实现队列.doc

    以下是一个使用C++模板类实现的循环数组队列: ```cpp template class MyQueue { private: struct myq { int head, rear; T* ele; }; myq* q; const int Max; public: // 构造函数 MyQueue() { q = new ...

    数据结构和算法必知必会的50个代码实现

    - 用数组实现一个顺序队列 - 用链表实现一个链式队列 - 实现一个循环队列 递归 - 编程实现斐波那契数列求值f(n)=f(n-1)+f(n-2) - 编程实现求阶乘n! - 编程实现一组数据集合的全排列 排序 - 实现归并排序、快速...

    数据结构-基本算法-循环队列

    数据结构-基本算法-循环队列(学生时代源码,调试可运行)

    数组和链表实现队列

    由于数组的固定大小,如果队列已满,需要考虑循环队列的概念,即队列的前后端相遇后继续在原地覆盖旧元素。 3. **出队操作**:出队时,移除队首元素,并将队首指针向后移动一位。若队首指针等于队尾指针,表示队列为...

    c++算法集-排序-链表-图-队列-二叉树实现

    "c++算法集-排序-链表-图-队列-二叉树实现"这个压缩包包含了C++语言实现的一些核心数据结构和算法,这些都是计算机科学的基础。 首先,我们来详细探讨排序算法。排序是计算机科学中最基本的操作之一,它涉及将一组...

Global site tag (gtag.js) - Google Analytics