Вы правы, списки можно хранить и в таблице, например.
Если *next заменить на idx, получим ту же самую логику поведения. Но "динамически связывать" как раз подразумевает и часто используется с динамическим выделением памяти, на чём я и попался. Стереотипы-с...
Попробовал сейчас на макросах сделать обобщённый вариант и для списков, и для таблиц: какой-то паскаль получается или абстрактный алгоритм. Найти указанную вами ошибку было бы сложнее; с другой стороны и допустить её было бы тоже меньше шансов. Получается набор NEXT(), IS_VALID(x), и подобного.
- Поглядите - вдруг они копались в вашей голове.
Конечно. Все люди копаются друг у друга в головах, даже поговорки есть: "у дураков мысли сходятся", "умные думают одинаково", "изобретать велосипед".