РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
939 of 1593 menu

Метод ring.Ring.Move

Метод ring.Ring.Move перемещает текущий указатель кольцевого списка на n позиций. В качестве единственного параметра он принимает целое число n — количество шагов для перемещения. Метод возвращает элемент *Ring, на который указывает указатель после перемещения. Если n положительное, перемещение происходит вперед (по направлению метода Next), если отрицательное — назад (по направлению метода Prev).

Синтаксис

r.Move(n int) *Ring

Пример

Давайте создадим кольцевой список из пяти элементов и переместим указатель на две позиции вперед:

package main import ( "container/ring" "fmt" ) func main() { r := ring.New(5) for i := 0; i < r.Len(); i++ { r.Value = i + 1 r = r.Next() } // Начинаем с первого элемента r = r.Move(0) fmt.Println("Current:", r.Value) // Перемещаемся на 2 элемента вперед r = r.Move(2) fmt.Println("After move +2:", r.Value) }

Результат выполнения кода:

"Current: 1" "After move +2: 3"

Пример

Теперь переместим указатель на три позиции назад от текущего элемента:

package main import ( "container/ring" "fmt" ) func main() { r := ring.New(5) for i := 0; i < r.Len(); i++ { r.Value = i + 1 r = r.Next() } // Начинаем с элемента со значением 3 r = r.Move(2) fmt.Println("Start at:", r.Value) // Перемещаемся на 3 элемента назад r = r.Move(-3) fmt.Println("After move -3:", r.Value) }

Результат выполнения кода:

"Start at: 3" "After move -3: 5"

Пример

Метод Move корректно обрабатывает перемещение на количество шагов, превышающее длину списка. В этом случае перемещение происходит по модулю длины кольца:

package main import ( "container/ring" "fmt" ) func main() { r := ring.New(3) for i := 0; i < r.Len(); i++ { r.Value = i + 1 r = r.Next() } // Начинаем с первого элемента r = r.Move(0) fmt.Println("Start:", r.Value) // Перемещаемся на 5 шагов вперед (эквивалентно +2) r = r.Move(5) fmt.Println("Move +5 (mod 3):", r.Value) }

Результат выполнения кода:

"Start: 1" "Move +5 (mod 3): 3"

Смотрите также

  • метод ring.Ring.Next,
    который возвращает следующий элемент кольцевого списка
  • метод ring.Ring.Prev,
    который возвращает предыдущий элемент кольцевого списка
  • метод ring.Ring.Link,
    который соединяет два кольцевых списка
  • метод ring.Ring.Unlink,
    который удаляет элементы из кольцевого списка
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить