Добавлю, что в случае цепочки из одного "закольцованного" элемента,  тело цикла WHILE (p.next # c)  вообще не выполнится.
Кстати тут "двунаправленность" и даже "закольцованность" принципиально ничего кардинально усложняющего по сравнению с линейным списком (строкой, файлом и т.д) не привносит. Просто везде надо определить соответствующий рассматриваемому случаю EOF.