Полагаю, учебным примером циклической структуры является двусвязный список . Каждый элемент указывает на предыдущий и следующий элементы в списке. Это означает, что каждый элемент образует цикл с предыдущим и следующим элементом.
A --> B --> C
A <-- B <-- C
(Здесь каждый A, B, C, хотя написано дважды - это один объект.)
A указывает на B, как следующий в списке. B указывает на A, как и в предыдущем списке. Таким образом, существует цикл от A до B и обратно до A. То же самое верно для каждого элемента в списке, причем элементы, не принадлежащие к голове или хвосту, принадлежат двум циклам.
Одним из решений для сериализации списков, подобных этому, является использование идентификаторов для представления каждого объекта. Это удаляет циклы в структуре. Мы могли бы выписать
list: {
items:
{ id:"a", value1: ... etc },
{ id:"b", values .... },
{ id:"c", values .... }
links:
{ elem:"a", next:"b" },
{ elem:"b", next:"c", prev: "a"},
{ elem:"c", prev:"b" }
}