Add Go codes to docs, including

the chapter of stack and queue, the chapter of tree.
This commit is contained in:
Yudong Jin
2022-12-03 20:25:24 +08:00
parent 1d9a076cdd
commit ebf9024136
41 changed files with 898 additions and 486 deletions

View File

@@ -4,13 +4,7 @@
package chapter_stack_and_queue
import (
"fmt"
"strconv"
"strings"
)
// ArrayStack 基于数组实现的栈
/* 基于数组实现的栈 */
type ArrayStack struct {
data []int // 数据
}
@@ -38,6 +32,7 @@ func (s *ArrayStack) Push(v int) {
s.data = append(s.data, v)
}
// Pop 出栈
func (s *ArrayStack) Pop() any {
// 弹出栈前,先判断是否为空
if s.IsEmpty() {
@@ -48,6 +43,7 @@ func (s *ArrayStack) Pop() any {
return val
}
// Peek 获取栈顶元素
func (s *ArrayStack) Peek() any {
if s.IsEmpty() {
return nil
@@ -56,18 +52,7 @@ func (s *ArrayStack) Peek() any {
return val
}
func (s *ArrayStack) Print() {
fmt.Println(s.toString())
}
func (s *ArrayStack) toString() string {
var builder strings.Builder
if s.IsEmpty() {
return "empty stack"
}
for i := len(s.data) - 1; i > 0; i-- {
builder.WriteString(strconv.Itoa(s.data[i]) + " -> ")
}
builder.WriteString(strconv.Itoa(s.data[0]))
return builder.String()
// 获取 Slice 用于打印
func (s *ArrayStack) toSlice() []int {
return s.data
}