示例#1
0
        public void Enqueue(T value)
        {
            var newNode = new QueueNode <T>(value);

            if (this.Count == 0)
            {
                this.head = newNode;
            }
            else if (this.Count == 1)
            {
                this.tail = newNode;
                this.tail.PreviousNode = this.head;
                this.head.NextNode     = this.tail;
            }
            else
            {
                this.tail.NextNode   = newNode;
                newNode.PreviousNode = this.tail;
                this.tail            = newNode;
            }

            this.Count++;
        }
示例#2
0
        public T Dequeue()
        {
            if (this.Count == 0)
            {
                throw new InvalidOperationException("The queue is empty!");
            }

            var element = this.head.Value;

            this.head = this.head.Next;
            if (this.head == null)
            {
                this.tail = null;
            }
            else
            {
                this.head.Previous = null;
            }

            this.Count--;

            return(element);
        }