Как выбрать структуру данных

Если вы наперёд не знаете количество элементов, которые вы должны будете принять например, посредством ввода данных пользователем, то используйте связный список (linked list).

Если нужно обработать много элементов, среди которых некоторые важнее других то используйте очередь с приоритетом (priority queue). Например, сетевой трафик имеет разный приоритет. Некоторые данные важнее, например, голосовые коммуникации в режиме реального времени требуют более высокого уровня QoS чем резервное копирование данных в фоновом режиме. Если ваш компьютер посылает пакеты для VoIP телефоного соединения и в тоже время загружает ваши фотки с отпуска на Facebook, то вы естественно захотите чтобы в первую очередь передавался голос, потому что он более time-sensitive.

Если вам нужно брать данные с накопителя у которого медленный доступ, например стримера или диска, то нужно использовать B-tree. Древовидная иерархия позволяет хранить данные таким способом, что можно эффективно искать нужные данные загружая только необходимые для этого части дерева с накопителя в оперативную память.