Относительно представления головоломки Иосифа с использованием массивов

Алгоритмы Роберта Седвика, было упомянуто, что связанный список может быть представлен с использованием массивов, по следующей ссылке

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 из цепи.

Значения в nextarray — это индекс следующего значения в цепочке. Если вы хотите удалить значение 5, которое находится в индексе 4, вам нужно изменить next[3]от 4 до 5, так что значение с индексом 4 эффективно удаляется из круга и будет пропущено при последующих обходах.

После выделения обновления «узел» со значением 4 указывает на «узел» со значением 6.

Другие вопросы по тегам