TODO: iter call 太多系统内存. 导致效率低下
This commit is contained in:
@@ -60,10 +60,18 @@ func New() *Stack {
|
||||
return s
|
||||
}
|
||||
|
||||
func NewWithCap(cap int) *Stack {
|
||||
s := &Stack{}
|
||||
s.size = 0
|
||||
s.top = &Node{elements: make([]interface{}, cap, cap), cur: -1}
|
||||
return s
|
||||
}
|
||||
|
||||
func (as *Stack) Clear() {
|
||||
as.size = 0
|
||||
as.top = &Node{elements: make([]interface{}, 8, 8), cur: -1}
|
||||
as.cache = nil
|
||||
|
||||
as.top.down = nil
|
||||
as.top.cur = -1
|
||||
}
|
||||
|
||||
func (as *Stack) Empty() bool {
|
||||
|
||||
@@ -8,34 +8,34 @@ import (
|
||||
"github.com/Pallinder/go-randomdata"
|
||||
)
|
||||
|
||||
// func TestPush(t *testing.T) {
|
||||
// s := New()
|
||||
// for i := 0; i < 10; i++ {
|
||||
// v := randomdata.Number(0, 10)
|
||||
// s.Push(v)
|
||||
// t.Error(v)
|
||||
// t.Error(s.String(), " size ", s.size)
|
||||
// }
|
||||
func TestPush(t *testing.T) {
|
||||
s := New()
|
||||
for i := 0; i < 10; i++ {
|
||||
v := randomdata.Number(0, 10)
|
||||
s.Push(v)
|
||||
t.Error(v)
|
||||
t.Error(s.String(), " size ", s.size)
|
||||
}
|
||||
|
||||
// t.Error(s.Values())
|
||||
t.Error(s.Values())
|
||||
|
||||
// for i := 0; i < 10; i++ {
|
||||
// v, ok := s.Pop()
|
||||
// t.Error(v, ok)
|
||||
// t.Error(s.String(), " size ", s.size)
|
||||
// }
|
||||
for i := 0; i < 10; i++ {
|
||||
v, ok := s.Pop()
|
||||
t.Error(v, ok)
|
||||
t.Error(s.String(), " size ", s.size)
|
||||
}
|
||||
|
||||
// for i := 0; i < 10; i++ {
|
||||
// v := randomdata.Number(0, 10)
|
||||
// s.Push(v)
|
||||
// }
|
||||
for i := 0; i < 10; i++ {
|
||||
v := randomdata.Number(0, 10)
|
||||
s.Push(v)
|
||||
}
|
||||
|
||||
// for i := -1; i < 11; i++ {
|
||||
// v, ok := s.Get(i)
|
||||
// t.Error(v, ok)
|
||||
// }
|
||||
for i := -1; i < 11; i++ {
|
||||
v, ok := s.Get(i)
|
||||
t.Error(v, ok)
|
||||
}
|
||||
|
||||
// }
|
||||
}
|
||||
|
||||
func BenchmarkGet(b *testing.B) {
|
||||
s := New()
|
||||
|
||||
Reference in New Issue
Block a user