Add Go codes to docs, including
the chapter of stack and queue, the chapter of tree.
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
Reference in New Issue
Block a user