Количество количества узлов в связанном списке, который может быть круговым

Полагайте, что событие интерфейс обратного вызова, где интерфейс имеет только один метод.

Только события рычага Вам нужно
события With, только необходимо реализовать обработчики для событий, Вы интересуетесь обработкой. В шаблоне интерфейса наблюдателя необходимо было бы реализовать все методы во всем интерфейсе включая реализацию тел метода для типов уведомления, о которых Вы на самом деле не заботитесь об обработке. В Вашем примере всегда необходимо реализовывать OnFoundDirectory и OnFoundFile, даже если Вы только заботитесь об одном из этих событий.

Меньше обслуживания
Другая хорошая вещь о событиях - Вы, может добавить новый к конкретному классу так, чтобы это повысило его, и Вы не должны изменять каждого существующего наблюдателя. Принимая во внимание, что, если Вы хотите добавить новый метод к интерфейсу, необходимо обойти каждый класс, который уже реализует тот интерфейс, и реализуйте новый метод во всех них. С событием, хотя, только необходимо изменить существующие классы, которые на самом деле хотят сделать что-то в ответ на новое событие, что Вы добавляете.

шаблон встроен в язык, таким образом, все знают, как использовать его
, События идиоматичны, в том, что, когда Вы видите событие, Вы знаете, как использовать его. С интерфейсом наблюдателя люди часто реализуют различные способы зарегистрироваться, чтобы получить уведомления и поднять трубку наблюдателя.. с событиями, хотя, после того как Вы изучили, как зарегистрировать и использовать одного (с + = оператор), остальные все одинаковые.

Профессионалы для интерфейсов
у меня нет многих профессионалов для интерфейсов. Я предполагаю, что они вынуждают кого-то к реализовать все методы в интерфейсе. Но, Вы не можете действительно вынудить кого-то реализовать все те методы правильно, таким образом, я не думаю, что существует много значения на этом.

Синтаксис
Некоторым людям не нравится способ, которым необходимо объявить тип делегата для каждого события. Кроме того, стандартные обработчики событий в платформе .NET следуют, имеют эти параметры: (возразите отправителю, EventArgs args). Поскольку отправитель не указывает конкретный тип, Вы имеете к удрученному, если Вы хотите использовать его. Это часто прекрасно на практике, если не совсем чувствует себя хорошо хотя, потому что Вы теряете защиту статической системы типов. Но, если Вы реализуете свои собственные события и не следуете рамочной конвенции .NET об этом, можно использовать корректный тип, столь потенциальный вниз бросающий, не требуется.

5
задан Bill the Lizard 21 September 2012 в 17:24
поделиться

4 ответа

Алгоритм черепаха и заяц может дать вам как длину цикла, так и количество узлов до начала цикла (λ и μ соответственно).

7
ответ дан 14 December 2019 в 13:41
поделиться

Самым элегантным решением является алгоритм поиска цикла Флойда: http://en.wikipedia.org/wiki/Cycle_detection#Tortoise_and_hare

Он работает за O (N) время. , и требуется только постоянный объем памяти.

2
ответ дан 14 December 2019 в 13:41
поделиться

Обратите внимание на это: Головоломка: зацикливание в связном списке

Маркировка указателя: в практика, связанная списки реализованы с использованием структур C хотя бы указателем; такая структура в C должен быть выровнен по 4 байта. Так что два младших бита - нули. Просматривая список, вы можете 'пометить' указатель как пройденный переворачивание младшего бита. А второй обход предназначен для очистки этих бит.

1
ответ дан 14 December 2019 в 13:41
поделиться

просто вспомните, где вы были, и если вы пришли в тот же узел, все кончено.

Попробуйте сохранить записи в двоичном дереве, и у вас будет время O (N * log (N)) и Сложность пространства O (N)

РЕДАКТИРОВАТЬ

Вы можете использовать сложность пространства журнала (N), если вы не сохраняете все ссылки, кроме как в экспоненциальном порядке. Это означает, что вы сохраняете 1-е, 2-е, 4-е, 8-е, 16-е, а затем, если вы получили удар, вам нужно продолжить с этой точки. Сложность по времени для этого - N * Log (n) ^ 2

-4
ответ дан 14 December 2019 в 13:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: