Я читаю С# 4.0 в двух словах братьями Альбахари, и я наткнулся на это:
Стеки реализуются внутри с массивом , который по мере необходимости изменяется, как в случае с Queue и List. (п. 288, пункт 4).
Я не могу не задаться вопросом, почему. LinkedList предоставляет O (1) вставки и удаления head и tail (которые должны хорошо работать для стека или очереди). Изменчивый массив имеет O (1) амортизированную вставку (если я правильно помню), но O (n) наихудший случай (я не уверен в удалении). И он, вероятно, использует больше места, чем связанный список (для больших стеков/очередей).
Есть ли еще что-то, кроме этого? В чем недостаток реализации двойной ссылки?