кроссворды, задачки, головоломки

Сборник задач разного уровня сложности по математике, информатике, физике, химии, программированию, экономике etc. Логические задачи, SQL задачи, решение задач. Задачи с ответами, а также нерешённые задачи.

Petruchek.Info

Найти длину цикла

Добавлено: 27.04.15 в 09:15
Метки: информатика

У вас есть узел, который является началом связного списка. Этот список всегда содержит хвост и цикл.

Необходимо найти длину цикла.

В списке, изображённом на картинке, длина цикла 11, а размер хвоста — 3.

Формально: написать функцию, которая получает в качестве параметра узел node, у которого есть свойство node.next (или метод node.getNext())

СПРЯТАТЬ РЕШЕНИЕ/ОТВЕТ

Решение на джаваскрипте:
function loop_size(node)
{
  var history = [];
  var cur = node;
  while (true)
  {
    for (var i=0;i<history.length;i++)
    {
      if (history[i] === cur)
        return history.length-i;
    }
    history.push(cur);
    cur = cur.next;
  }
}
источник

Комментарии
Google says:
Лёня (14.06.15):
А слабо написать условие на понятном языке?
   Ответ редакции
Так написано же: найти длину цикла в списке.
Лёня (15.06.15):
11
   Ответ редакции
Алгоритм, Лёня, нам нужен алгоритм.
Vlad (07.10.15):
Приведенный алгоритм не вполне верен, так как стартуя от начальной точки хвоста получим не 11 а что-то побольше. На пройденный node надо отметить на каком шаге он был получен. И тогда разница между history.length и шагом даст правильное значение
   Ответ редакции
history.length-i
Жуковец Олег (22.12.15):
Длина цикла равна 33. После окончания цикла равного 33 все начинается сначала. Верный ответ или нет?
   Ответ редакции
Нет.

Во-первых, не 33.
Во-вторых, нужен алгоритм.
Аноним (22.12.15):
Хорошо, длина равна 22, без алгоритма:)
Комментарий от новенького:
Новенький является
Новенький не робот
Знаки на картинке: латинские буквы, арабские цифры


Есть на сайте: Онлайн кроссворды Задачи Онлайн игры Блог
Все работы, опубликованные на сайте — авторские, если не указано иное. Перепечатка возможна только с письменного разрешения владельцев ресурса, с обязательной ссылкой на сайт petruchek.info. Пишите нам: . Сайт должен работать в IE, FF, Opera, Safari.

Реклама:

Разработано в студии "Webous"о проектесайта карта

Реклама: