list

package module
v1.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 11, 2022 License: MIT Imports: 2 Imported by: 1

README

Go list implementation with generics

Contains non thread-safe implementations of:

  1. Double link list
  2. Queue
  3. Stack

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrPqIsFull = errors.New("PQ is full")

Functions

This section is empty.

Types

type Node

type Node[T any] struct {
	// contains filtered or unexported fields
}

Node - double link list node

func (*Node[T]) AddAfter

func (n *Node[T]) AddAfter(nextVal T) *Node[T]

AddAfter - add new node to the list after this node

func (*Node[T]) AddBefore

func (n *Node[T]) AddBefore(nextVal T) *Node[T]

AddBefore - add new node to the list before this node

func (*Node[T]) Next

func (n *Node[T]) Next() *Node[T]

Next - return next node of list

func (*Node[T]) Prev

func (n *Node[T]) Prev() *Node[T]

Prev - return previous node of the list

func (*Node[T]) Remove

func (n *Node[T]) Remove() (prev, next *Node[T])

Remove - remove node from the list

func (*Node[T]) SetValue

func (n *Node[T]) SetValue(val T)

SetValue - set value of node

func (*Node[T]) Value

func (n *Node[T]) Value() T

Value - return value in node

type PQ added in v1.1.0

type PQ[K constraints.Integer, T any] struct {
	// contains filtered or unexported fields
}

func NewPQ added in v1.1.0

func NewPQ[K constraints.Integer, T any](maxLength int) *PQ[K, T]

func (*PQ[K, T]) Cap added in v1.1.0

func (p *PQ[K, T]) Cap() int

func (*PQ[K, T]) CurrentLength added in v1.1.0

func (p *PQ[K, T]) CurrentLength() int

func (*PQ[K, T]) DecInPosition added in v1.1.0

func (p *PQ[K, T]) DecInPosition(k int) *PqItem[K, T]

func (*PQ[K, T]) Delete added in v1.1.0

func (p *PQ[K, T]) Delete(item *PqItem[K, T])

func (*PQ[K, T]) Dequeue added in v1.1.0

func (p *PQ[K, T]) Dequeue() (*PqItem[K, T], bool)

func (*PQ[K, T]) Enqueue added in v1.1.0

func (p *PQ[K, T]) Enqueue(orderBy K, value T) (*PqItem[K, T], error)

func (*PQ[K, T]) EnqueueWithOust added in v1.1.0

func (p *PQ[K, T]) EnqueueWithOust(orderBy K, value T) (*PqItem[K, T], *PqItem[K, T])

func (*PQ[K, T]) IncInPosition added in v1.1.0

func (p *PQ[K, T]) IncInPosition(k int) *PqItem[K, T]

type PqItem added in v1.1.0

type PqItem[K constraints.Integer, T any] struct {
	// contains filtered or unexported fields
}

func (*PqItem[K, T]) GetIndex added in v1.1.0

func (p *PqItem[K, T]) GetIndex() int

func (*PqItem[K, T]) GetOrderBy added in v1.1.0

func (p *PqItem[K, T]) GetOrderBy() K

func (*PqItem[K, T]) GetValue added in v1.1.0

func (p *PqItem[K, T]) GetValue() T

func (*PqItem[K, T]) SetValue added in v1.2.0

func (p *PqItem[K, T]) SetValue(value T)

type Queue

type Queue[T any] struct {
	// contains filtered or unexported fields
}

Queue - FIFO queue

func NewQueue

func NewQueue[T any]() *Queue[T]

NewQueue - create new queue

func (*Queue[T]) Dequeue

func (q *Queue[T]) Dequeue() *Node[T]

func (*Queue[T]) Enqueue

func (q *Queue[T]) Enqueue(val T)

func (*Queue[T]) Head

func (q *Queue[T]) Head() *Node[T]

func (*Queue[T]) Len

func (q *Queue[T]) Len() int

func (*Queue[T]) MoveToBack added in v1.0.1

func (q *Queue[T]) MoveToBack(node *Node[T])

func (*Queue[T]) Remove

func (q *Queue[T]) Remove(node *Node[T]) (prev, next *Node[T])

func (*Queue[T]) Tail

func (q *Queue[T]) Tail() *Node[T]

type Stack

type Stack[T any] struct {
	// contains filtered or unexported fields
}

func NewStack

func NewStack[T any]() *Stack[T]

func (*Stack[T]) Len

func (s *Stack[T]) Len() int

func (*Stack[T]) Pop

func (s *Stack[T]) Pop() *Node[T]

func (*Stack[T]) Push

func (s *Stack[T]) Push(val T)

func (*Stack[T]) Remove

func (s *Stack[T]) Remove(node *Node[T]) (next *Node[T])

func (*Stack[T]) Top

func (s *Stack[T]) Top() *Node[T]

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL