I'm reading C# 4.0 in a Nutshell by the Albahari brothers and I came across this:
Stacks are implemented internally with an array that's resized as required, as with Queue and List. (pg 288, paragraph 4)
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).
Is there more to it than that? What is the downside to a doubly linked list implementation?