Documentation
¶
Overview ¶
Package list implements a doubly linked list.
Example ¶
l := list.New[any]()
e3 := l.PushFront(3)
e4 := l.PushBack(4)
l.InsertAfter(5, e4)
l.InsertBefore(2, e3)
l2 := list.New[any]()
l2.PushBack(1)
l3 := list.New[any]()
l3.PushFront(6)
l.PushBackList(l2)
l.PushFrontList(l3)
head, tail := l.Front(), l.Back()
l.MoveToFront(tail)
l.MoveToBack(head)
// Iterate through list and print its contents.
for e := l.Front(); e != nil; e = e.Next() {
fmt.Println(e.Value)
}
Output: 1 2 3 4 5 6
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Element ¶
type Element[T any] struct { // The value stored with this element. Value T // contains filtered or unexported fields }
Element is an element of a linked list.
type List ¶
type List[T any] interface { // Clear clears list. Clear() List[T] // Len returns the number of elements of list l. // The complexity is O(1). Len() int // Front returns the first element of list l or nil if the list is empty. Front() *Element[T] // Back returns the last element of list l or nil if the list is empty. Back() *Element[T] // Remove removes e from l if e is an element of list l. // It returns the element value e.Value. // The element must not be nil. Remove(e *Element[T]) T // PushFront inserts a new element e with value v at the front of list l and returns e. PushFront(T) *Element[T] // PushBack inserts a new element e with value v at the back of list l and returns e. PushBack(T) *Element[T] // InsertBefore inserts a new element e with value v immediately before mark and returns e. // If mark is not an element of l, the list is not modified. // The mark must not be nil. InsertBefore(T, *Element[T]) *Element[T] // InsertAfter inserts a new element e with value v immediately after mark and returns e. // If mark is not an element of l, the list is not modified. // The mark must not be nil. InsertAfter(T, *Element[T]) *Element[T] // MoveToFront moves element e to the front of list l. // If e is not an element of l, the list is not modified. // The element must not be nil. MoveToFront(*Element[T]) // MoveToBack moves element e to the back of list l. // If e is not an element of l, the list is not modified. // The element must not be nil. MoveToBack(*Element[T]) // MoveBefore moves element e to its new position before mark. // If e or mark is not an element of l, or e == mark, the list is not modified. // The element and mark must not be nil. MoveBefore(e *Element[T], mark *Element[T]) // MoveAfter moves element e to its new position after mark. // If e or mark is not an element of l, or e == mark, the list is not modified. // The element and mark must not be nil. MoveAfter(e *Element[T], mark *Element[T]) // PushBackList inserts a copy of another list at the back of list l. // The lists l and other may be the same. They must not be nil. PushBackList(other List[T]) // PushFrontList inserts a copy of another list at the front of list l. // The lists l and other may be the same. They must not be nil. PushFrontList(other List[T]) }
Click to show internal directories.
Click to hide internal directories.