повторно используемые коллекции сложны в C, у них просто нет гибкости или метаданных (как вы узнаете, когда вы переполняете этот список массивов и вам нужно перераспределить? пользовательский alloc?
Вы можете сделать это (вы МОЖЕТЕ сделать что-нибудь в c), но это очень быстро становится абстрактным.
С другой стороны, создание связанного списка в c - это просто весело. Массивы уже есть, хэши раздражают, но не невозможно, деревья - это весело, ...
Также - люди, которые думают на языке c, как правило, постоянно оптимизируют. Установка каждой операции связанного списка за вызовом функции вместо простого использования this = this.next, вероятно, вызовет отвращение многих из них (справедливо).