《实战Go语言数据结构和算法》- 即将出版的新书
《实战Go语言数据结构和算法》- 即将出版的新书 我的Packt出版书籍即将开放早期访问。请发送邮件至bhagvanarch@gmail.com,以便在发布后第一时间获取早期访问权限。
《Go语言实战数据结构和算法》——Packt出版社预计将在2019年第一季度末出版此书。
本书代码位于:
PacktPublishing/Hands-On-Data-Structures-and-Algorithms-with-Go
Packt出版的《Go语言实战数据结构和算法》- PacktPublishing/Hands-On-Data-Structures-and-Algorithms-with-Go
1 回复
这是一个令人兴奋的消息!Go语言在数据结构和算法方面的专业书籍对于社区来说非常有价值。以下是基于您提供的GitHub仓库内容的一些技术评论:
从仓库结构来看,这本书涵盖了Go语言中经典的数据结构和算法实现。以下是几个关键实现的代码示例:
链表实现示例:
type Node struct {
data int
next *Node
}
type LinkedList struct {
head *Node
}
func (ll *LinkedList) Insert(data int) {
newNode := &Node{data: data}
if ll.head == nil {
ll.head = newNode
return
}
current := ll.head
for current.next != nil {
current = current.next
}
current.next = newNode
}
二叉树遍历示例:
type TreeNode struct {
Val int
Left *TreeNode
Right *TreeNode
}
func InorderTraversal(root *TreeNode) []int {
var result []int
var traverse func(node *TreeNode)
traverse = func(node *TreeNode) {
if node == nil {
return
}
traverse(node.Left)
result = append(result, node.Val)
traverse(node.Right)
}
traverse(root)
return result
}
排序算法示例(快速排序):
func QuickSort(arr []int) []int {
if len(arr) < 2 {
return arr
}
pivot := arr[0]
var less, greater []int
for _, num := range arr[1:] {
if num <= pivot {
less = append(less, num)
} else {
greater = append(greater, num)
}
}
result := append(QuickSort(less), pivot)
result = append(result, QuickSort(greater)...)
return result
}
图数据结构示例:
type Graph struct {
vertices int
adjList map[int][]int
}
func NewGraph(vertices int) *Graph {
return &Graph{
vertices: vertices,
adjList: make(map[int][]int),
}
}
func (g *Graph) AddEdge(src, dest int) {
g.adjList[src] = append(g.adjList[src], dest)
g.adjList[dest] = append(g.adjList[dest], src)
}
这些实现展示了Go语言在数据结构和算法方面的简洁性和高效性。仓库中的代码结构清晰,包含了测试用例,这对于学习Go语言的数据结构和算法实现非常有帮助。
期待这本书的正式发布,相信它会成为Go开发者学习数据结构和算法的重要参考资料。

