Стек, очередь и связанные коллекции в C#
Список хранит элементы подряд, и любой из них можно взять по номеру. Не каждая задача устроена так. Иногда нужен только последний добавленный, иногда только тот, кто ждёт дольше всех, иногда вставка в середину без сдвига остальных.
Стек работает как стопка: последним положили - первым забрали. Очередь работает как живая очередь: первым пришёл - первым ушёл. Связанная цепочка держит элементы узлами со ссылками друг на друга, поэтому узел можно вставить между двумя соседними, не передвигая всю коллекцию.
Есть и коллекции, которые сами поддерживают порядок. Элемент кладут внутрь, а наружу он выходит уже на своём месте: по алфавиту, по числу или по отдельному приоритету. Раздел про эти способы хранения, а не про ещё один список.