File tree Expand file tree Collapse file tree 4 files changed +13
-24
lines changed
Expand file tree Collapse file tree 4 files changed +13
-24
lines changed Original file line number Diff line number Diff line change 44
55但是顺序栈需要先确定一个固定长度,可能会存在内存空间浪费的问题,推荐使用链式栈。
66
7- 但是,Go使用了Slice结构实现栈 ,不存在空间浪费问题。
7+ 不过Go使用了Slice结构实现栈 ,不存在空间浪费问题。
88
99## 二 链栈的Go实现
1010``` go
Original file line number Diff line number Diff line change 55 SequenList "algorithm/list/SequenList"
66 LinkedList "algorithm/list/LinkedList"
77 RingList "algorithm/list/RingList"
8- SequenStack "algorithm/stack/SequenStack"
98 DoublyList "algorithm/list/DoublyList"
109 "fmt"
1110)
@@ -99,16 +98,6 @@ func testDoublyList() {
9998 dl .Show ()
10099}
101100
102- func testSequenStack () {
103- ss := SequenStack .New ()
104- ss .Show ()
105- ss .Push (15 )
106- ss .Push (17 )
107- ss .Push (19 )
108- v ,_ := ss .Pop ()
109- fmt .Println (v )
110- ss .Show ()
111- }
112101
113102func main () {
114103
@@ -124,6 +113,5 @@ func main() {
124113
125114 // testDoublyList() // 测试双向链表
126115
127- testSequenStack () // 测试栈
128116
129117}
Original file line number Diff line number Diff line change 11/**
2- * 栈:链栈
2+ * 栈:链式栈
33 */
44
55package LinkedStack
66
7+ import "fmt"
8+
79type Node struct {
810 data interface {}
9- top * Node // 栈顶指针
11+ next * Node
1012}
1113
1214type LinkedStack struct {
1315 Top * Node // 栈顶元素
1416 Length int
1517}
1618
17- func NewLinkedStack () * LinkedStack {
19+ func New () * LinkedStack {
1820 return & LinkedStack {
1921 nil ,
2022 0 ,
@@ -33,7 +35,8 @@ func (ls *LinkedStack) Push(data interface{}) {
3335// 出栈
3436func (ls * LinkedStack ) Pop () interface {} {
3537 if ls .Length == 0 {
36- panic ("当前栈是空栈" )
38+ fmt .Println ("stack is empty" )
39+ return nil
3740 }
3841 value := ls .Top .data
3942 node := ls .Top
Original file line number Diff line number Diff line change 44
55package SequenStack
66
7- import (
8- "errors"
9- "fmt"
10- )
7+ import "fmt"
118
129type SequenStack struct {
1310 data []interface {}
@@ -26,17 +23,18 @@ func (ss *SequenStack) Push(data interface{}) {
2623}
2724
2825// 出栈
29- func (ss * SequenStack ) Pop () ( interface {}, error ) {
26+ func (ss * SequenStack ) Pop () interface {} {
3027
3128 if ss .Length () == 0 {
32- return nil , errors .New ("stack is empty" )
29+ fmt .Println ("stack is empty" )
30+ return nil
3331 }
3432
3533 index := ss .Length () - 1
3634 value := ss .data [index ]
3735 ss .data = append (ss .data [:index ])
3836
39- return value , nil
37+ return value
4038}
4139
4240// 获取栈长度
You can’t perform that action at this time.
0 commit comments