есть такой трюк, знаешь, линдкед лист, только массивов, скажем по 16 элементов. не говорю, что под твой случай хорошо будет, но вообще очень мощный финт, потому что кеши проца очень эффективно захватывают соседние элементы. помнится, в париматче что-то сильно оптимизнулось после перевода на такие рельсы.
Ну у меня есть в библиотеке и линкед лист, и avl дерево, и adaptive radix tree, и все на массивах и индексах, т.к. ноды struct, для той конкретно задачи нужно было именно так делать