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

Метод ring.Ring.Link

Метод Link соединяет кольцевой список, на котором он был вызван, с другим кольцевым списком, переданным в качестве аргумента. Он возвращает указатель на новый элемент, который следует за исходным элементом после объединения. Первым параметром метод принимает указатель на кольцевой список r, который будет присоединен к текущему списку. В результате операции оба списка объединяются в один кольцевой список.

Синтаксис

func (r *Ring) Link(s *Ring) *Ring

Пример

Давайте создадим два кольцевых списка и соединим их:

package main import ( "container/ring" "fmt" ) func main() { r1 := ring.New(3) r2 := ring.New(3) for i := 0; i < r1.Len(); i++ { r1.Value = i r1 = r1.Next() } for i := 0; i < r2.Len(); i++ { r2.Value = i + 3 r2 = r2.Next() } // Соединяем два кольца linked := r1.Link(r2) // Выводим элементы объединенного кольца linked.Do(func(x interface{}) { fmt.Println(x) }) }

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

0 1 2 3 4 5

Пример

Давайте соединим два кольца, но начнем обход с другого элемента:

package main import ( "container/ring" "fmt" ) func main() { r1 := ring.New(3) r2 := ring.New(3) for i := 0; i < r1.Len(); i++ { r1.Value = i r1 = r1.Next() } for i := 0; i < r2.Len(); i++ { r2.Value = i + 3 r2 = r2.Next() } // Перемещаемся на второй элемент первого кольца r1 = r1.Move(1) // Соединяем кольца linked := r1.Link(r2) // Выводим элементы объединенного кольца linked.Do(func(x interface{}) { fmt.Println(x) }) }

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

1 2 0 3 4 5

Пример

Давайте соединим кольцо с самим собой, чтобы создать новое кольцо из части элементов:

package main import ( "container/ring" "fmt" ) func main() { r := ring.New(5) for i := 0; i < r.Len(); i++ { r.Value = i r = r.Next() } // Перемещаемся на третий элемент r = r.Move(2) // Соединяем кольцо с самим собой linked := r.Link(r) // Выводим элементы нового кольца linked.Do(func(x interface{}) { fmt.Println(x) }) }

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

2 3 4 0 1 2 3 4 0 1

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

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