Skip to content

Commit 86d28aa

Browse files
committed
链式栈完成
1 parent a48909b commit 86d28aa

File tree

4 files changed

+13
-24
lines changed

4 files changed

+13
-24
lines changed

02-数据结构/02-栈3-链栈.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
但是顺序栈需要先确定一个固定长度,可能会存在内存空间浪费的问题,推荐使用链式栈。
66

7-
但是,Go使用了Slice结构实现栈,不存在空间浪费问题。
7+
不过Go使用了Slice结构实现栈,不存在空间浪费问题。
88

99
## 二 链栈的Go实现
1010
```go

sources/go/main.go

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import (
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

113102
func main() {
114103

@@ -124,6 +113,5 @@ func main() {
124113

125114
// testDoublyList() // 测试双向链表
126115

127-
testSequenStack() // 测试栈
128116

129117
}

sources/go/stack/LinkedStack/LinkedStack.go

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,22 @@
11
/**
2-
* 栈:链栈
2+
* 栈:链式栈
33
*/
44

55
package LinkedStack
66

7+
import "fmt"
8+
79
type Node struct {
810
data interface{}
9-
top *Node // 栈顶指针
11+
next *Node
1012
}
1113

1214
type 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
// 出栈
3436
func (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

sources/go/stack/SequenStack/SequenStack.go

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,7 @@
44

55
package SequenStack
66

7-
import (
8-
"errors"
9-
"fmt"
10-
)
7+
import "fmt"
118

129
type 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
// 获取栈长度

0 commit comments

Comments
 (0)