File tree Expand file tree Collapse file tree 14 files changed +137
-28
lines changed
Expand file tree Collapse file tree 14 files changed +137
-28
lines changed Original file line number Diff line number Diff line change @@ -84,7 +84,7 @@ IsNotEmpty() bool
8484## 栈中元素个数
8585
8686```
87- Len () int
87+ Size () int
8888```
8989
9090
Original file line number Diff line number Diff line change @@ -40,7 +40,8 @@ func (x *ArrayStack[T]) Pop() T {
4040
4141func (x * ArrayStack [T ]) PopE () (T , error ) {
4242 if x .topIndex == 0 {
43- return nil , ErrStackEmpty
43+ var zero T
44+ return zero , ErrStackEmpty
4445 }
4546 value := x .slice [x .topIndex ]
4647 x .topIndex --
@@ -54,7 +55,8 @@ func (x *ArrayStack[T]) Peek() T {
5455
5556func (x * ArrayStack [T ]) PeekE () (T , error ) {
5657 if x .topIndex == 0 {
57- return nil , ErrStackEmpty
58+ var zero T
59+ return zero , ErrStackEmpty
5860 }
5961 return x .slice [x .topIndex ], nil
6062}
@@ -67,7 +69,7 @@ func (x *ArrayStack[T]) IsNotEmpty() bool {
6769 return x .topIndex != 0
6870}
6971
70- func (x * ArrayStack [T ]) Len () int {
72+ func (x * ArrayStack [T ]) Size () int {
7173 return x .topIndex
7274}
7375
Original file line number Diff line number Diff line change 1+ package stack
2+
3+ import (
4+ "github.com/stretchr/testify/assert"
5+ "testing"
6+ )
7+
8+ func TestArrayStack_Clear (t * testing.T ) {
9+ stack := NewArrayStack [int ]()
10+ stack .Push (1 )
11+ stack .Push (2 )
12+ assert .Equal (t , 2 , stack .Size ())
13+
14+ }
15+
16+ func TestArrayStack_IsEmpty (t * testing.T ) {
17+
18+ }
19+
20+ func TestArrayStack_IsNotEmpty (t * testing.T ) {
21+
22+ }
23+
24+ func TestArrayStack_Size (t * testing.T ) {
25+
26+ }
27+
28+ func TestArrayStack_Peek (t * testing.T ) {
29+
30+ }
31+
32+ func TestArrayStack_PeekE (t * testing.T ) {
33+
34+ }
35+
36+ func TestArrayStack_Pop (t * testing.T ) {
37+
38+ }
39+
40+ func TestArrayStack_PopE (t * testing.T ) {
41+
42+ }
43+
44+ func TestArrayStack_Push (t * testing.T ) {
45+
46+ }
47+
48+ func TestArrayStack_String (t * testing.T ) {
49+
50+ }
51+
52+ func TestNewArrayStack (t * testing.T ) {
53+
54+ }
Original file line number Diff line number Diff line change 11module github.com/CC11001100/go-stack
22
33go 1.18
4+
5+ require (
6+ github.com/davecgh/go-spew v1.1.1 // indirect
7+ github.com/pmezard/go-difflib v1.0.0 // indirect
8+ github.com/stretchr/objx v0.5.0 // indirect
9+ github.com/stretchr/testify v1.8.1 // indirect
10+ gopkg.in/yaml.v3 v3.0.1 // indirect
11+ )
Original file line number Diff line number Diff line change 1+ github.com/davecgh/go-spew v1.1.0 /go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38 =
2+ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c =
3+ github.com/davecgh/go-spew v1.1.1 /go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38 =
4+ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM =
5+ github.com/pmezard/go-difflib v1.0.0 /go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4 =
6+ github.com/stretchr/objx v0.1.0 /go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME =
7+ github.com/stretchr/objx v0.4.0 /go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw =
8+ github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c =
9+ github.com/stretchr/objx v0.5.0 /go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo =
10+ github.com/stretchr/testify v1.7.1 /go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg =
11+ github.com/stretchr/testify v1.8.0 /go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU =
12+ github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk =
13+ github.com/stretchr/testify v1.8.1 /go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4 =
14+ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 /go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0 =
15+ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c /go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM =
16+ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA =
17+ gopkg.in/yaml.v3 v3.0.1 /go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM =
Original file line number Diff line number Diff line change @@ -36,13 +36,15 @@ func (x *LinkedStack[T]) Pop() T {
3636
3737func (x * LinkedStack [T ]) PopE () (T , error ) {
3838 if x .top == nil {
39- return nil , ErrStackEmpty
39+ var zero T
40+ return zero , ErrStackEmpty
4041 }
4142 top := x .top
4243 x .top = x .top .next
4344 value := top .value
4445 top .next = nil
45- top .value = nil
46+ var zero T
47+ top .value = zero
4648 x .ln --
4749 return value , nil
4850}
@@ -54,7 +56,8 @@ func (x *LinkedStack[T]) Peek() T {
5456
5557func (x * LinkedStack [T ]) PeekE () (T , error ) {
5658 if x .top == nil {
57- return nil , ErrStackEmpty
59+ var zero T
60+ return zero , ErrStackEmpty
5861 }
5962 return x .top .value , nil
6063}
@@ -67,7 +70,7 @@ func (x *LinkedStack[T]) IsNotEmpty() bool {
6770 return x .top != nil
6871}
6972
70- func (x * LinkedStack [T ]) Len () int {
73+ func (x * LinkedStack [T ]) Size () int {
7174 return x .ln
7275}
7376
Original file line number Diff line number Diff line change @@ -44,7 +44,8 @@ func (x *MaxStack[T]) Pop() T {
4444func (x * MaxStack [T ]) PopE () (T , error ) {
4545 e , err := x .stack .PopE ()
4646 if err != nil {
47- return nil , err
47+ var zero T
48+ return zero , err
4849 }
4950 return e .value , nil
5051}
@@ -57,7 +58,8 @@ func (x *MaxStack[T]) Peek() T {
5758func (x * MaxStack [T ]) PeekE () (T , error ) {
5859 e , err := x .stack .PeekE ()
5960 if err != nil {
60- return nil , err
61+ var zero T
62+ return zero , err
6163 }
6264 return e .value , nil
6365}
@@ -70,8 +72,8 @@ func (x *MaxStack[T]) IsNotEmpty() bool {
7072 return x .stack .IsNotEmpty ()
7173}
7274
73- func (x * MaxStack [T ]) Len () int {
74- return x .stack .Len ()
75+ func (x * MaxStack [T ]) Size () int {
76+ return x .stack .Size ()
7577}
7678
7779func (x * MaxStack [T ]) Clear () error {
@@ -90,7 +92,8 @@ func (x *MaxStack[T]) GetMax() T {
9092func (x * MaxStack [T ]) GetMaxE () (T , error ) {
9193 e , err := x .stack .PeekE ()
9294 if err != nil {
93- return nil , err
95+ var zero T
96+ return zero , err
9497 }
9598 return e .max , nil
9699}
Original file line number Diff line number Diff line change @@ -44,7 +44,8 @@ func (x *MinStack[T]) Pop() T {
4444func (x * MinStack [T ]) PopE () (T , error ) {
4545 e , err := x .stack .PopE ()
4646 if err != nil {
47- return nil , err
47+ var zero T
48+ return zero , err
4849 }
4950 return e .value , nil
5051}
@@ -57,7 +58,8 @@ func (x *MinStack[T]) Peek() T {
5758func (x * MinStack [T ]) PeekE () (T , error ) {
5859 e , err := x .stack .PeekE ()
5960 if err != nil {
60- return nil , err
61+ var zero T
62+ return zero , err
6163 }
6264 return e .value , nil
6365}
@@ -70,8 +72,8 @@ func (x *MinStack[T]) IsNotEmpty() bool {
7072 return x .stack .IsNotEmpty ()
7173}
7274
73- func (x * MinStack [T ]) Len () int {
74- return x .stack .Len ()
75+ func (x * MinStack [T ]) Size () int {
76+ return x .stack .Size ()
7577}
7678
7779func (x * MinStack [T ]) Clear () error {
@@ -90,7 +92,8 @@ func (x *MinStack[T]) GetMin() T {
9092func (x * MinStack [T ]) GetMinE () (T , error ) {
9193 e , err := x .stack .PeekE ()
9294 if err != nil {
93- return nil , err
95+ var zero T
96+ return zero , err
9497 }
9598 return e .min , nil
9699}
Original file line number Diff line number Diff line change @@ -21,8 +21,8 @@ type Stack[T any] interface {
2121 // IsNotEmpty 栈是否不为空
2222 IsNotEmpty () bool
2323
24- // Len 返回栈中元素的个数
25- Len () int
24+ // Size 返回栈中元素的个数
25+ Size () int
2626
2727 // Clear 清空栈
2828 Clear () error
Original file line number Diff line number Diff line change @@ -58,10 +58,10 @@ func (x *SyncArrayStack[T]) IsNotEmpty() bool {
5858 return x .stack .IsNotEmpty ()
5959}
6060
61- func (x * SyncArrayStack [T ]) Len () int {
61+ func (x * SyncArrayStack [T ]) Size () int {
6262 x .lock .RLock ()
6363 defer x .lock .RLock ()
64- return x .stack .Len ()
64+ return x .stack .Size ()
6565}
6666
6767func (x * SyncArrayStack [T ]) Clear () error {
You can’t perform that action at this time.
0 commit comments