import "github.com/zyedidia/generic/list"Package list provides an implementation of a doubly-linked list with a front and back. The individual nodes of the list are publicly exposed so that the user can have fine-grained control over the list.
Example
package main
import (
"fmt"
"github.com/zyedidia/generic/list"
)
func main() {
l := list.New[int]()
l.PushBack(0)
l.PushBack(1)
l.PushBack(2)
l.PushBack(3)
l.Front.Each(func(i int) {
fmt.Println(i)
})
}0
1
2
3
type List
List implements a doubly-linked list.
type List[V any] struct {
Front, Back *Node[V]
}func New
func New[V any]() *List[V]New returns an empty linked list.
func (*List[V]) PushBack
func (l *List[V]) PushBack(v V)PushBack adds 'v' to the end of the list.
func (*List[V]) PushBackNode
func (l *List[V]) PushBackNode(n *Node[V])PushBackNode adds the node 'n' to the back of the list.
func (*List[V]) PushFront
func (l *List[V]) PushFront(v V)PushFront adds 'v' to the beginning of the list.
func (*List[V]) PushFrontNode
func (l *List[V]) PushFrontNode(n *Node[V])PushFrontNode adds the node 'n' to the front of the list.
func (*List[V]) Remove
func (l *List[V]) Remove(n *Node[V])Remove removes the node 'n' from the list.
type Node
Node is a node in the linked list.
type Node[V any] struct {
Value V
Prev, Next *Node[V]
}func (*Node[V]) Each
func (n *Node[V]) Each(fn func(val V))Each calls 'fn' on every element from this node onward in the list.
func (*Node[V]) EachReverse
func (n *Node[V]) EachReverse(fn func(val V))EachReverse calls 'fn' on every element from this node backward in the list.
Generated by gomarkdoc