#region 队列的基本操作 /// <summary> /// 队列的基本操作 /// </summary> public class SeqQueueClass { #region 队列的初始化操作 /// <summary> /// 队列的初始化操作 /// </summary> /// <typeparam></typeparam> /// <param></param> public SeqQueue<T> SeqQueueInit<T>(SeqQueue<T> seqQueue) { seqQueue.head = 0; seqQueue.tail = 0;
return seqQueue; } #endregion
#region 队列是否为空 /// <summary> /// 队列是否为空 /// </summary> /// <typeparam></typeparam> /// <param></param> /// <returns></returns> public bool SeqQueueIsEmpty<T>(SeqQueue<T> seqQueue) { //如果两指针重合,说明队列已经清空 if (seqQueue.head == seqQueue.tail) return true; return false; } #endregion
#region 队列是否已满 /// <summary> /// 队列是否已满 /// </summary> /// <typeparam></typeparam> /// <param></param> /// <returns></returns> public bool SeqQueueIsFull<T>(SeqQueue<T> seqQueue) { //如果尾指针到达数组末尾,说明队列已经满 if (seqQueue.tail == 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("队列已满,不能入队操作");
//入队操作 seqQueue.data[seqQueue.tail++] = data;
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("队列已空,不能进行出队操作");
var single = seqQueue.data[seqQueue.head];
//head指针自增 seqQueue.data[seqQueue.head++] = default(T);
return single;
} #endregion
(编辑:焦作站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|