public string Dequeue() { if (head == null) { throw new Exception("The queue is empty"); } var v = head.value; if (head == tail) { head = tail = null; } else { head = head.next; head.prev = null; } return(v); }
QueueElement2 tail; // = null public void Enqueue(string v) { if (head == null) { head = tail = new QueueElement2() { value = v }; } else { tail = new QueueElement2() { value = v, prev = tail }; tail.prev.next = tail; } }