#region 队列的基本操作 /// <summary> /// 队列的基本操作 /// </summary> public class SeqQueueClass { #region 队列的初始化操作 /// <summary> /// 队列的初始化操作 /// </summary> /// <typeparam></typeparam> /// <param></param> public SeqQueue<T> SeqQueueInit<T>(SeqQueue<T> seqQueue) { seqQueue.size = seqQueue.head = seqQueue.tail = 0;
return seqQueue; } #endregion
#region 队列是否为空 /// <summary> /// 队列是否为空 /// </summary> /// <typeparam></typeparam> /// <param></param> /// <returns></returns> public bool SeqQueueIsEmpty<T>(SeqQueue<T> seqQueue) { //如果两指针重合,说明队列已经清空 if (seqQueue.size == 0) return true; return false; } #endregion
#region 队列是否已满 /// <summary> /// 队列是否已满 /// </summary> /// <typeparam></typeparam> /// <param></param> /// <returns></returns> public bool SeqQueueIsFull<T>(SeqQueue<T> seqQueue) { //采用循环队列后,头指针 if (seqQueue.size == seqQueue.MaxSize) return true; return false; } #endregion
#region 队列元素入队 /// <summary> /// 队列元素入队 /// </summary> /// <typeparam></typeparam> /// <param></param> /// <param></param> /// <returns></returns> public SeqQueue<T> SeqQueueIn<T>(SeqQueue<T> seqQueue, T data) { //如果队列已满,则不能进行入队操作 if (SeqQueueIsFull(seqQueue)) throw new Exception("队列已满,还入啥队列啊!");
//采用循环队列,必须先赋值,在自增tail指针 seqQueue.data[seqQueue.tail] = data; seqQueue.tail = (seqQueue.tail + 1) % seqQueue.MaxSize;
//队列实际元素增加 seqQueue.size++;
return seqQueue; } #endregion
#region 队列元素出队 /// <summary> /// 队列元素出队 /// </summary> /// <typeparam></typeparam> /// <param></param> /// <returns></returns> public T SeqQueueOut<T>(SeqQueue<T> seqQueue) { if (SeqQueueIsEmpty(seqQueue)) throw new Exception("队列已空,大哥,不要在出队了!");
//循环队列出队,展现的是head的灵活性 seqQueue.head = (seqQueue.head + 1) % seqQueue.MaxSize;
//队列实际元素递减 seqQueue.size--;
return seqQueue.data[seqQueue.head]; } #endregion
(编辑:焦作站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|