Поиск цикла в одиночном списке и поиск узла, с которого начинается цикл. Я видел использование двух указателей (как правило, медленных и быстрых), чтобы найти цикл, но я написал этот код и, похоже, работает нормально. Мой вопрос в том, есть ли что-то, чего не хватает моему коду, при поиске цикла в одиночном списке.Поиск цикла в одиночном списке
Node* find_cycle_node(Node *head){
Node *p=head;
Node *q;
while(p->next!=null)
{
q=p->next;
while(q->next!=null)
{
if(p==q) return q; //Node repeated i.e cycle
else (q=q->next;)
}
p=p->next;
}
return null; // no cycle detected
}
с 'return;', вы получите ошибку компиляции. 'return NULL', если цикл не обнаружен – David
Этот сайт не для отзывов о кодах. Если у вас нет конкретной проблемы с кодом, который вы не понимаете, тогда вам следует попросить общую обратную связь в другом месте. –
Ну, я думаю, одна вещь, которую вы можете рассмотреть, - это не только правильность, но и время исполнения. Ваш алгоритм выглядит так, как будто он работает в O (n^2), тогда как двунаправленный (черепаха и зайчик) работает как-то вроде O (n). –