public void RemoveLast() { if (IsEmpty) { throw new InvalidOperationException(); } if (Count == 1) { Head = null; Tail = null; } else { Tail.Previous.Next = null; //null the last node; Tail = Tail.Previous; //shift the tail (now it's the former penultimate node); } Count--; }
public void RemoveFirst() { if (IsEmpty) { throw new InvalidOperationException(); } //shift head; Head = Head.Next; Count--; if (IsEmpty) { Tail = null; } else { Head.Previous = null; } }