dataspace

Форк
0
/
list.go 
38 строк · 797.0 Байт
1
package dataspace
2

3
type list struct {
4
	root element // корневой элемент
5
	len  uint64  // кол-во элементов
6
}
7

8
// Конструктор создаёт новый двусвязный список.
9
func newList() *list {
10
	l := &list{root: element{}, len: 0}
11
	l.root.next = &l.root
12
	l.root.prev = &l.root
13
	return l
14
}
15

16
// Метод добавляет новый элемент списка.
17
func (l *list) push(v uint64) *element {
18
	e := &element{
19
		list:  l,
20
		next:  l.root.prev.next,
21
		prev:  l.root.prev,
22
		value: v,
23
	}
24
	e.prev.next = e
25
	e.next.prev = e
26
	l.len++
27
	return e
28
}
29

30
// Метод удаляет элемент списка.
31
func (l *list) remove(e *element) {
32
	e.prev.next = e.next
33
	e.next.prev = e.prev
34
	e.next = nil
35
	e.prev = nil
36
	e.list = nil
37
	l.len--
38
}
39

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.