2014-11-17 2 views
-1

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

+0

Вы имеете в виду выполнить некоторую операцию на 'a', затем' c' и т. Д.? Или переходите от 'a' к' c' без запроса 'b' каким-либо образом? – Beta

+0

как это может быть без запроса b? @Beta –

+0

@Beta Я хочу выполнить некоторую операцию на c и т. Д. ... и я не запрашиваю b, поскольку у меня нет операции на b. – quidstone

ответ

1

Не уверен, что вы пытаетесь для достижения здесь, но в любом случае вы можете просто перейти на каждый второй узел, используя следующий следующий указатель узла (и/или предыдущий предыдущий указатель, если он дважды связан).

Вы можете сделать это в цикле;

loop (condition) { 
    traveler = traveler->next->next; 

    // Do something with node 
    ... 
} 

Здесь ваш traveler узел просто фиктивный узел, который пересекает список.

Поскольку ваш связанный список является круговым, ваш condition должен быть таким, что вам нужно найти какой-то способ завершения цикла вместо обнаружения, если следующий узел (traveler) является NULL.

+0

если размер шага - два - путешественник-> следующий-> следующий ..... и если размер шага = 3 это путешественник-> следующий- > next-> дальше? , и если я хочу переменный размер шага, что мне делать? – quidstone

+0

@quidstone - я не буду показывать вам код, но если вы хотите изменить размер шага, рекурсивная функция сделает трюк. Все, что вам нужно сделать, это передать свой размер шага и текущий узел в функцию. Затем вы увеличите счетчик при переходе к следующему узлу, и как только вы достигнете размера шага, верните указатель на этот узел. Удачи. – bwinata

Смежные вопросы