Ваше предложение кажется очень разумным. Если вы пропустили список с двумя связями через представителей, вы можете склеить элемент из списка представителей за время O (1), а затем обходить список каждый раз, когда вам нужно вывести список представителей.
@ ardenit has упомянул, что вы также можете использовать внешнюю таблицу ha sh или BST для хранения представителей. Это, конечно, проще кодировать, хотя я подозреваю, что это будет не так быстро, как простое продвижение связанного списка через элементы.