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++; }
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); }