Skip to content

stacks is a Go package with generics providing multiple Stack data structures optimized for various use cases

License

Notifications You must be signed in to change notification settings

cattlecloud/stacks

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

stacks

Go Reference License Build

stacks is a Go library with generics implementing multiple Stack data structures for optimizing by use-case.

stack (noun):
  1. a LIFO data structure

Getting Started

The stacks package can be added to a Go project with go get.

go get cattlecloud.net/go/stacks@latest
import "cattlecloud.net/go/stacks"

Examples

backed by slice

The Simple stack type is backed by a normal Go slice and is a good choice for small numbers of elements or where the size of the stack will not increase or decrease repeatedly - this is important so as to minmize re-copying the data as the underlying slice is resized.

s := stacks.Simple[string]()
s.Push("how")
s.Push("are")
s.Push("you")
fmt.Println(s.Pop()) // "you"
backed by linked list

The Linked stack type is backed by a linked-list and is a good choice for large numbers of elements or where the size of the stack does increase or decrease repeatedly. The nature of the linked list avoids the need to re-copy elements as the size of the data structure changes over time.

s := stacks.Linked[string]()
s.Push("foo")
s.Push("bar")
s.Push("baz")
fmt.Println(s.Pop()) // "baz"
methods
s.Push[T](item T)
s.Pop() T
s.Peek() T
s.Empty() bool
s.Size() int

License

The cattlecloud.net/go/stacks module is opensource under the BSD-3-Clause license.

About

stacks is a Go package with generics providing multiple Stack data structures optimized for various use cases

Topics

Resources

License

Stars

Watchers

Forks

Contributors 2

  •  
  •