cpp

Двусвязные списки

Структура List из пакета container/list реализует двусвязный список, позволяющий хранить данные произвольных типов. Элементы двусвязных списков хранят два указателя: на предыдущий элемент и на следующий элемент. Благодаря этому вставка и удаление элементов происходит быстро, достаточно изменить несколько значений, а не перемещать элементы, как это делает динамический массив. Но получить доступ к элементу списка по индексу нельзя, ведь список не содержит индексов и элементы могут быть расположены в разных местах памяти.

Каждый элемент списка реализуется с помощью структуры Element. Структура содержит поле Value, в котором хранится значение элемента списка. Типом этого поля является пустой интерфейс (см. разд. 2.11), поэтому мы можем сохранить данные любого типа. Структура Element содержит два метода:

  • Prev() — возвращает указатель на предыдущий элемент списка или значение nil. Формат метода:
(*list.Element).Prev() *list.Element
  • Next() — возвращает указатель на следующий элемент списка или значение nil. Формат метода:
(*list.Element).Next() *list.Element

Создание списка

Создать пустой список позволяет функция New(). Формат функции:

list.New() *list.List

Функция возвращает указатель, с помощью которого мы можем выполнять различные операции со списком. Пример создания пустого списка:

// import "container/list"
arr := list.New()
fmt.Println(arr) // &{{0xc000070480 0xc000070480 <nil> <nil>} 0}

Учебник Go (Golang)
Учебник Go (Golang) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов

cpp