Один последовательный участок памяти — это значит «последовательные адреса памяти». Таковыми будут массив простой и динамический, строка традиционного устройства, и все структуры памяти, что на них основаны. В том числе простейший стек и кольцевая очередь.
Для чего это нужно?
1. Это ближе к железу: проще код, лучше работает кэш, а значит, быстрее.
2. Некоторые функции, особенно нешаблонные, для своей работы требуют именно последовательных ячеек памяти.
Но если я реализую стек через список, разве это не будет противоречить сказанному?
Совершенно верно, будет. Отсюда и знаменитая ошибка «переполнение стека» — непонятно, как наладить стек вызовов бесконечной ёмкости и относительно простого устройства. Потому, если нужна очень глубокая рекурсия (например, при обходе сетей), стек вызовов приходится эмулировать.