修改iterator ToHead ToTail的实现, 和使用方法.

This commit is contained in:
huangsimin
2020-03-18 11:44:27 +08:00
parent 239cb3c189
commit b34134e22f
15 changed files with 248 additions and 37 deletions

View File

@@ -49,11 +49,13 @@ func TestIteratorHeadTail(t *testing.T) {
}
iter.ToHead()
iter.Prev() // or iter.Next
if iter.Value() != 1 {
t.Error("iter.Value() != ", 14, " value =", iter.Value())
}
iter.ToTail()
iter.Next() // or iter.Prev()
if iter.Value() != 30 {
t.Error("iter.Value() != ", 30, " value =", iter.Value())
}

View File

@@ -1,7 +1,7 @@
package avl
import (
"github.com/474420502/focus/stack/listarraystack"
lastack "github.com/474420502/focus/stack/listarraystack"
)
type Iterator struct {
@@ -31,13 +31,36 @@ func NewIteratorWithCap(n *Node, cap int) *Iterator {
}
func (iter *Iterator) ToHead() {
for iter.Prev() {
if iter.cur == nil {
iter.cur = iter.up
}
for iter.cur.parent != nil {
iter.cur = iter.cur.parent
}
for iter.cur.children[0] != nil {
iter.cur = iter.cur.children[0]
}
iter.SetNode(iter.cur)
iter.cur = nil
}
func (iter *Iterator) ToTail() {
for iter.Next() {
if iter.cur == nil {
iter.cur = iter.up
}
for iter.cur.parent != nil {
iter.cur = iter.cur.parent
}
for iter.cur.children[1] != nil {
iter.cur = iter.cur.children[1]
}
iter.SetNode(iter.cur)
iter.cur = nil
}
func (iter *Iterator) GetNode() *Node {