dataspace
/
list.go
38 строк · 797.0 Байт
1package dataspace2
3type list struct {4root element // корневой элемент5len uint64 // кол-во элементов6}
7
8// Конструктор создаёт новый двусвязный список.
9func newList() *list {10l := &list{root: element{}, len: 0}11l.root.next = &l.root12l.root.prev = &l.root13return l14}
15
16// Метод добавляет новый элемент списка.
17func (l *list) push(v uint64) *element {18e := &element{19list: l,20next: l.root.prev.next,21prev: l.root.prev,22value: v,23}24e.prev.next = e25e.next.prev = e26l.len++27return e28}
29
30// Метод удаляет элемент списка.
31func (l *list) remove(e *element) {32e.prev.next = e.next33e.next.prev = e.prev34e.next = nil35e.prev = nil36e.list = nil37l.len--38}
39