Относительно представления головоломки Иосифа с использованием массивов
Алгоритмы Роберта Седвика, было упомянуто, что связанный список может быть представлен с использованием массивов, по следующей ссылке
http://flylib.com/books/en/3.55.1.34/1/
На рис. 3.8, здесь, если 5 удаляется из моего понимания, следующие 4 должны быть заменены на индекс 6, так как val 5 удаляется, так как мы переходим к тому, что цифра в пункте 4 удаляется, следующий из val 3 изменяется. Я не следую логике фигуры. Может кто-нибудь, пожалуйста, помогите мне.
Спасибо!
2 ответа
Индекс начинается с нуля, в отличие от самого значения (лучше использовать буквы).
Пример удаления значения 5
: перед удалением, следующий индекс узла со значением 4
4, что указывает на значение 5
; после удаления следующий индекс меняется на 5, указывая на значение 6
(следующий изменен с 4 на 5).
Или, используя префикс v
указать значения:
до
index ... 3 4 5 ...
----------------------
value v4 v5 v6
next 4 5 6
после
index ... 3 4 5 ...
----------------------
value v4 v5 v6
next 5 5 6
как вы можете видеть узел v4
сопровождается v6
(индекс 5) практически удаление v5
из цепи.
Значения в
next
array — это индекс следующего значения в цепочке. Если вы хотите удалить значение 5, которое находится в индексе 4, вам нужно изменить
next[3]
от 4 до 5, так что значение с индексом 4 эффективно удаляется из круга и будет пропущено при последующих обходах.
После выделения обновления «узел» со значением 4 указывает на «узел» со значением 6.