Чтобы ваш связанный список был круглым, ваш хвостовой узел должен ссылаться на головной узел.Так что это просто вопрос выполнения этого в конце вашего Add()
метода:
toAdd.next = head;
Обратите внимание, что ваш Add()
метод не выполняет итерацию по всем узлам в вашем связанном списке, он просто делает
Node current = head;
Так что, если вы попытаетесь добавить несколько узлов, будет обновлен только головной узел, чтобы он указывал на каждый новый, заменяя любую ссылку, которую он имел в каждом вызове Add()
, и вашсвязанный список всегда будет содержать не более 2 узлов.
Вы можете перебирать каждый узел следующим образом (это заменяет строку, о которой я упоминал выше):
Node current = head;
while (current.next != head)
{
current = current.next;
}
Теперь current
будет представлятьваш хвостовой узел, независимо от того, сколько узлов вы добавляете в свой связанный список.Затем вы можете добавить новый хвостовой узел, сделать старый один указателем на новый, а новый - на ваш головной узел.
Другое дело: ваша текущая реализация Add()
требует инициализацииВаш связанный список с головным узлом, в противном случае NullReferenceException
будет поднят, если вы попытаетесь что-либо добавить.Вы можете написать конструктор для решения этой проблемы легко.