【数据结构】 Queue 的简单实现

 【数据结构】 Queue 的简单实现

  public class XQueue<T>
    {
        /// <summary>
        /// 第一个元素
        /// </summary>
        private static XQueueItem<T> _top;
        /// <summary>
        /// 最后一个元素
        /// </summary>
        private static XQueueItem<T> _last;

        /// <summary>
        /// 长度
        /// </summary>
        private int _length;

        /// <summary>
        /// 容量
        /// </summary>
        /// <returns></returns>
        public int Count()
        {
            return _length;
        }

        /// <summary>
        /// 入队
        /// </summary>
        /// <param name="t"></param>
        public void Enqueue(T t)
        {
            var item = new XQueueItem<T> { Item = t };
            if (_top == null)
            {
                _last = _top = item;
            }
            else
            {
                _last.Next = item;
                item.Prev = _last;
            }
            _length++;
        }

        /// <summary>
        /// 出队
        /// </summary>
        /// <returns></returns>
        public T DeQueue()
        {
            if (_length == 0)
            {
                throw new Exception("队列为空");
            }
            T t = _last.Item;
            _last = _last.Prev;
            return t;
        }


        internal class XQueueItem<T>
        {
            /// <summary>
            /// 当前元素
            /// </summary>
            public T Item;

            /// <summary>
            /// 下一个元素
            /// </summary>
            public XQueueItem<T> Next;

            /// <summary>
            /// 上一个元素
            /// </summary>
            public XQueueItem<T> Prev;
        }
    }
原文地址:https://www.cnblogs.com/fzz2727551894/p/4644563.html