Взгляните на круговой связанный список в исходном коде ядра Linux: http://lxr.linux.no/linux+v2.6.36/include/linux/list.h
Его прелесть заключается в том, что у вас нет специальной структуры для ваших данных, чтобы поместиться в список,вам нужно только включить struct list_head *
в структуру, которую вы хотите иметь в виде списка.Макросы для доступа к элементам в списке будут обрабатывать вычисление смещения для получения от указателя struct list_head
на ваши данные.
Более подробное объяснение связанного списка, используемого в ядре, можно найти на kernelnewbies.org/ FAQ / LinkedLists (Извините, у меня недостаточно кармы для публикации двух гиперссылок).
Редактировать: Ну, список представляет собой список с двумя связями, а не один, как у вас, но вы могли быпринять концепцию и создать свой собственный односвязный список.