二,数组模式队列

实现思路:

1)front=-1指向队列头前一位置,rear=-1指向队列尾,maxSize初始化队列最大容量

2)当rear<maxSize-1 表示队列还未满,允许继续在队列末尾添加rear++;

3)当front==rear表示队列为空

C#实现代码:

using System;

namespace 数据结构
{
    public class ArrayQueue
    {
        static void Main(string[] args)
        {
            //初始化队列
            var queue = new ArrayQueue(5);
            try
            {
                queue.GetQueue();
            }
            catch
            {
                Console.WriteLine("队列还是空的呢...\n");
            }
            Console.WriteLine("开始入队...\n");
            for (int i = 1; i <= 6; i++)
            {
                queue.AddQueue(i);
            }
            Console.WriteLine("\n开始出队...\n");
            for (int i = 1; i < 6; i++)
            {
                Console.WriteLine(queue.GetQueue());
            }
            try
            {
                queue.GetQueue();
            }
            catch
            {
                Console.WriteLine("全部出队了哦...");
            }
        }

        #region 数组模式队列
        private int maxSize;//队列最大值
        private int front;//队列头
        private int rear;//队列尾
        private int[] arrayQueue;//模拟队列数组
        //初始化队列
        public ArrayQueue(int maxSize = 1)
        {
            this.maxSize = maxSize;
            this.arrayQueue = new int[maxSize];
            this.front = -1;//指向队列头前一个位置
            this.rear = -1;//指向队列尾,队列最后一个位置
        }

        //判断队列是否已满
        public bool IsFull()
        {
            return rear == maxSize - 1;
        }
        public bool IsEmpty()
        {
            return front == rear;
        }

        //入队
        public bool AddQueue(int item)
        {
            //队列已满
            if (IsFull())
            {
                Console.WriteLine("队列已满...");
                return false;
            }
            rear++;
            arrayQueue[rear] = item;
            return true;
        }

        //出队
        public int GetQueue()
        {
            //队列为空
            if (IsEmpty())
            {
                throw new IndexOutOfRangeException("队列为空...");
            }
            front++;
            return arrayQueue[front];
        }
        #endregion
    }
}

原文地址:https://www.cnblogs.com/xiaojvhuang/p/12677479.html

时间: 2024-08-30 14:42:43

二,数组模式队列的相关文章

技术文章-数组与队列

在Java编程中,常常会遇到需要存储和处理大量同类信息的时候,这时候就要运用数组或者队列的数据存储结构来方便操作. 1.数组 定义:数组是属于数据结构中一种线性的数据结构,因为其对象在内存中的存储方式是一个连续的存储空间. 数组在使用时的书写格式:(以一维数组为) 定义和实例化对象同步进行: 已知存储数据的类型和长度时:数据类型 [] 数组名 = new 数据类型[长度]; 已经知道具体的每一项数据时:数据类型 [] 数组名 = {数据,...}; 已经知道具体的每一项数据同时规定数据类型时:数

消息中间件(二)消息队列

一.消息队列概述 消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题.实现高性能,高可用,可伸缩和最终一致性架构.是大型分布式系统不可缺少的中间件. 目前在生产环境,使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ等. 二.消息队列应用场景 以下介绍消息队列在实际应用中常用的使用场景.异步处理,应用解耦,流量削锋和消息通讯四个场景. 2.1异步处理 场景说明:用户注册后,需要发注册邮件和注册短信.传统

JavaScript的数组实现队列与堆栈的方法

JavaScript的数组实现队列与堆栈的方法 今天在项目中要使用JavaScript实现数据结构中的队列和堆栈,这里做一下总结. 一.队列和堆栈的简单介绍 1.1.队列的基本概念 队列:是一种支持先进先出(FIFO)的集合,即先被插入的数据,先被取出! 如下图所示: 1.2.堆栈的基本概念 堆栈:是一种支持后进先出(LIFO)的集合,即后被插入的数据,先被取出! 如下图所示: 二. 在JavaScript中实现队列和堆栈 在JavaScript中实现队列和数组主要是通过数组,js数组中提供了以

LabVIEW之生产者/消费者模式--队列操作 彭会锋

LabVIEW之生产者/消费者模式--队列操作 彭会锋 本文章主要是对学习LabVIEW之生产者/消费者模式的学习笔记,其中涉及到同步控制技术-队列.事件.状态机.生产者-消费者模式,这几种技术在在本章中都会有侧重点的进行介绍和总结! 队列同步技术-操作函数 同步控制技术可以实现在多个VI之间或者同一VI 不同县城之间同步任务和交换数据:在LabVIEW中提供了‘同步’函数选板,包括通知器.队列.信号量.集合点.事件.首次调用函数,本文主要关注同步控制技术之队列技术: 队列操作函数: 1 “获取

数据结构与算法—稀疏数组和队列

目录 稀疏数组和队列 1.稀疏数组 1.1 解决方法 1.2 代码实现 2. 队列 2.1 数组模拟队列 2.2 数组模拟环形队列 稀疏数组和队列 1.稀疏数组 所谓稀疏数组就是当数组中大部分的内容值都未被使用(或都为零),在数组中仅有少部分的空间使用.因此造成内存空间的浪费,为了节省内存空间,并且不影响数组中原有的内容值,我们可以使用稀疏数组去压缩数据.OK,如果你不明白,那我们来看一个例子. ? 在一个五子棋中,有存盘和续上盘的功能 分析问题:因为该二维数组的很多默认值是 0,因此记录了很多

稀疏数组和队列

一.数据结构的分型 数据结构包括线性结构和非线性结构 线性结构: 1.线性结构是最常见的数据结构,其特点是数据元素之间一对一的线性关系 2.线性结构有两种不同的存储结构(数组)和链式存储结构(链表),顺序存储的线性表称为顺序表,顺序表中存储的元素是连续的 3.链式存储的表称为链表,链表中的存储元素不一定是连续的,元素节点中存放数据元素以及相邻元素的地址信息 4.线性结构常见的有:数组,队列,链表和栈 非线性结构: 包括二维数组,多维数组,广义表,图结构,树结构 二.稀疏数组 当一个数组中大部分元

【二维单调队列】BZOJ1047-[HAOI2007]理想的正方形

[题目大意] 有一个a*b的整数组成的矩阵,现请你从中找出一个n*n的正方形区域,使得该区域所有数中的最大值和最小值的差最小. [思路] 裸的二维单调队列.二维单调队列的思路其实很简单: (1)对于每一行维护两个宽度为n的滑动窗口记录单行中的min和max,和POJ2823一个道理.此时相当于把n个格子浓缩到了一个格子当中. (2)维护n*n大小的二维滑动窗口中的min和max.由于有了第一步操作,只要考虑每一个n*n的矩形右上角到右下角的最值即可.相当于对于每一列,维护两个宽度为n的滑动窗口.

研磨设计模式解析及python代码实现——(二)外观模式(Facade)

一.外观模式定义 为子系统中的一组接口提供一个一致的界面,使得此子系统更加容易使用. 二.书中python代码实现 1 class AModuleApi: 2 def testA(self): 3 pass 4 class AModuleImpl(AModuleApi): 5 def testA(self): 6 print "Now Call testA in AModule!" 7 class BModuleApi: 8 def testB(self): 9 pass 10 cla

数组的队列和栈方法

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>数组的队列和栈方法</title></head><body><script>// 栈是一种LIFO(Last-In-First-Out后进先出)的数据结构,js中的push()和pop()类似栈的行为// 队列是一种FIFO(