На счёт списков.
Удивительно, но в предпоследнем проекте перепись почти всего с высокозаумных структур на элементарные одно- и двусвязные списки не только резко "облегчило" части описания структур данных, но и заметно "проредила" части алгоритмов манипулирования с элементами структур.
(В конце концов, сколнился к аргументации Вирта в его описании процесса выбора структур данных для его компилятора Оберона: наглядность и лёгкость (и ПОНИМАЕМОСТЬ) работы перевесили "скорость".) Естественно, оценка скорострельности прикидочно проводилась, но, в итоге, само "требование" предопределило и пересмотр большей части остальных алгоритмов и структур данных. В результате получил легко понимаемую и сопровождаемую систему, в которой части манипулирующие элементами списков были "написаны и забыты" - настолько там осталось меньше мест для "зевков"...