using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Ropin.Inspection.Common.Helper { public class QueueHelper { object[] data; //数据元素 int maxsize; //最大容量 int front; //指向队头 int rear; //指向队尾 //初始化队列 public QueueHelper(int size) { this.maxsize = size; data = new object[size]; front = rear = -1; } //最大容量属性 public int MaxSize { get { return this.maxsize; } set { this.maxsize = value; } } //队尾属性 public int Rear { get { return this.rear; } } //队头属性 public int Front { get { return this.front; } } //数据属性 public object this[int index] { get { return data[index]; } } //获得队列的长度 public int GetQueueLength() { return rear - front; } //判断队列是否满 public bool IsFull() { if (GetQueueLength() == maxsize) return true; else return false; } //判断队列是否为空 public bool IsEmpty() { if (rear == front) return true; else return false; } //清空队列 public void ClearQueue() { rear = front = -1; } //入队 public void In(object e) { if (IsFull()) { Console.WriteLine("队列已满!"); return; } data[++rear] = e; } //出队 public object Out() { if (IsEmpty()) { Console.WriteLine("队列为空!"); return null; } if (rear - front > 0) { object tmp = data[++front]; return tmp; } else { Console.WriteLine("全出队了!"); ClearQueue(); return null; } } //获得队头元素 public object GetHead() { if (IsEmpty()) { Console.WriteLine("队列为空!"); return null; } return data[front + 1]; } } }