Skip to content

Instantly share code, notes, and snippets.

View pacuna's full-sized avatar

Pablo Acuña pacuna

  • Spotify
  • Austin, TX
View GitHub Profile
package main
import (
"fmt"
"sortedlist/coarselist"
"sync"
)
func main() {
l := coarselist.New()
type list struct {
mu sync.Mutex
head *node
size int
}
type node struct {
item []byte
key uint64
next *node
}
func newNode(item []byte) *node {
key, _ := hashstructure.Hash(item, nil)
return &node{
item: item,
func (l *list) Add(item []byte) bool {
var pred, curr *node
key, _ := hashstructure.Hash(item, nil)
pred = l.head
curr = pred.next
for curr.key < key {
pred = curr
curr = curr.next
func (l *list) Remove(item []byte) bool {
var pred, curr *node
key, _ := hashstructure.Hash(item, nil)
pred = l.head
curr = pred.next
for curr.key < key {
pred = curr
curr = curr.next
func (l *list) Contains(item []byte) bool {
var pred, curr *node
key, _ := hashstructure.Hash(item, nil)
pred = l.head
curr = pred.next
for curr.key < key {
pred = curr
curr = curr.next
package main
import (
"fmt"
"sortedlist/simplelist"
"sync"
)
func main() {
l := simplelist.New()
package simplelist
import "testing"
func Test_List(t *testing.T) {
l := New()
l.Add([]byte("item1"))
l.Add([]byte("item2"))
if l.Size() != 2 {
package set
type Set interface {
Add(item []byte) bool
Remove(item []byte) bool
Contains(item []byte) bool
}
package set
type Set interface {
Add(item []byte) bool
Remove(item []byte) bool
Contains(item []byte) bool
}