summaryrefslogtreecommitdiff
path: root/search/elementary.go
diff options
context:
space:
mode:
authorPaul Buetow <git@mx.buetow.org>2020-12-21 20:37:44 +0000
committerPaul Buetow <git@mx.buetow.org>2020-12-21 20:37:44 +0000
commit7815c3d006b64d5a6a6664e7c2c96c9c27f29c45 (patch)
treece0e7bbfd3605c3558d7a4b32f4de2bb28580561 /search/elementary.go
parent117a3efac9cd84f14369c46e4833cd265fda0676 (diff)
add Size to search interface and fix redblacktree tests
Diffstat (limited to 'search/elementary.go')
-rw-r--r--search/elementary.go9
1 files changed, 9 insertions, 0 deletions
diff --git a/search/elementary.go b/search/elementary.go
index b522cd0..ed00159 100644
--- a/search/elementary.go
+++ b/search/elementary.go
@@ -8,6 +8,7 @@ type ElementaryElem struct {
type Elementary struct {
root *ElementaryElem
+ size int
}
func NewElementary() *Elementary {
@@ -18,9 +19,14 @@ func (s *Elementary) Empty() bool {
return s.root == nil
}
+func (s *Elementary) Size() int {
+ return s.size
+}
+
func (s *Elementary) Put(key int, val int) {
if s.Empty() {
s.root = &ElementaryElem{key, val, nil}
+ s.size++
return
}
@@ -33,6 +39,7 @@ func (s *Elementary) Put(key int, val int) {
}
if elem.next == nil {
elem.next = &ElementaryElem{key, val, nil}
+ s.size++
return
}
elem = elem.next
@@ -61,6 +68,7 @@ func (s *Elementary) Del(key int) (int, error) {
defer func() {
s.root = s.root.next
}()
+ s.size--
return s.root.val, nil
}
@@ -70,6 +78,7 @@ func (s *Elementary) Del(key int) (int, error) {
defer func() {
elem.next = elem.next.next
}()
+ s.size--
return elem.next.val, nil
}
elem = elem.next