二,数组模式队列
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 } }
以上是关于二,数组模式队列的主要内容,如果未能解决你的问题,请参考以下文章
NC41 最长无重复子数组/NC133链表的奇偶重排/NC116把数字翻译成字符串/NC135 股票交易的最大收益/NC126换钱的最少货币数/NC45实现二叉树先序,中序和后序遍历(递归)(代码片段