title: Why are Stack<T> and Queue<T> implemented with an array?
body: <p>I'm reading C# 4.0 in a Nutshell by the Albahari brothers and I came across this:</p>
  
  <blockquote>
    <p>Stacks are implemented internally with an <strong>array that's resized as required</strong>, as with Queue and List. (pg 288, paragraph 4)</p>
  </blockquote>
  
  <p>I can't help but wonder why. LinkedList provides O(1) head and tail inserts and deletes (which should work well for a stack or queue). A resizable array has O(1) amortized insert (if I remember right), but O(n) worst case (I'm not sure about delete). And it probably uses more space than the linked list (for large stacks/queues).</p>
  
  <p>Is there more to it than that? What is the downside to a doubly linked list implementation? </p>