Метод list.List.MoveToFront

Метод MoveToFront перемещает переданный элемент в начало списка. Если элемент уже находится в начале, список не изменяется. Метод принимает один параметр - указатель на элемент типа *list.Element, который необходимо переместить. Элемент должен принадлежать этому списку, иначе метод вызовет панику.

Синтаксис

golist.MoveToFront(e *list.Element)

Пример

Давайте создадим список из элементов 1, 2, 3, 4, 5 и переместим элемент со значением 3 в начало:

gopackage main

import (
  "container/list"
  "fmt"
)

func main() {
  l := list.New()
  for i := 1; i <= 5; i++ {
    l.PushBack(i)
  }

  var elem *list.Element
  for e := l.Front(); e != nil; e = e.Next() {
    if e.Value == 3 {
      elem = e
      break
    }
  }

  if elem != nil {
    l.MoveToFront(elem)
  }

  for e := l.Front(); e != nil; e = e.Next() {
    fmt.Println(e.Value)
  }
}

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

go3
1
2
4
5

Пример

Давайте создадим список из строк "a", "b", "c", "d", "e" и переместим элемент со значением "a", который уже находится в начале:

gopackage main

import (
  "container/list"
  "fmt"
)

func main() {
  l := list.New()
  elements := []string{"a", "b", "c", "d", "e"}
  for _, v := range elements {
    l.PushBack(v)
  }

  front := l.Front()
  if front != nil && front.Value == "a" {
    l.MoveToFront(front)
  }

  for e := l.Front(); e != nil; e = e.Next() {
    fmt.Println(e.Value)
  }
}

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

go"a"
"b"
"c"
"d"
"e"

Пример

Давайте создадим список и переместим последний элемент в начало:

gopackage main

import (
  "container/list"
  "fmt"
)

func main() {
  l := list.New()
  l.PushBack(1)
  l.PushBack(2)
  l.PushBack(3)
  l.PushBack(4)
  l.PushBack(5)

  last := l.Back()
  if last != nil {
    l.MoveToFront(last)
  }

  for e := l.Front(); e != nil; e = e.Next() {
    fmt.Println(e.Value)
  }
}

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

go5
1
2
3
4

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

  • метод MoveToBack,
    который перемещает элемент в конец списка
  • метод PushFront,
    который вставляет новый элемент в начало списка
  • метод InsertBefore,
    который вставляет элемент перед указанным элементом
  • метод Remove,
    который удаляет элемент из списка