二,数组模式队列

Posted xiaojvhuang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二,数组模式队列相关的知识,希望对你有一定的参考价值。

实现思路:

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("队列还是空的呢...
");
            }
            Console.WriteLine("开始入队...
");
            for (int i = 1; i <= 6; i++)
            {
                queue.AddQueue(i);
            }
            Console.WriteLine("
开始出队...
");
            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
    }
}

技术图片

以上是关于二,数组模式队列的主要内容,如果未能解决你的问题,请参考以下文章

# Java 常用代码片段

# Java 常用代码片段

perl中的队列

最小堆(优先队列)基本概念,即一个完整建立,插入,删除代码

JDK常用数据结构

NC41 最长无重复子数组/NC133链表的奇偶重排/NC116把数字翻译成字符串/NC135 股票交易的最大收益/NC126换钱的最少货币数/NC45实现二叉树先序,中序和后序遍历(递归)(代码片段