概念
通过指针将一组零散的内存块串联在一起 , 把内存块称为链表的“结点”。 记录下个结点地址的指针叫作后继指针 next ,第一个结点叫作头结点,把最后一个结点叫作尾结点 。
代码实现
定义单链表
在 golang 中可以通过结构体定义单链表:文章来源:https://www.toymoban.com/news/detail-685168.html
// ListNode 单链表
type ListNode struct {
Val int
Next *ListNode
}
操作单链表
使用 golang 实现单链表常用操作:添加节点、遍历链表、查找链表节点、获取链表长度文章来源地址https://www.toymoban.com/news/detail-685168.html
// AddNode 添加节点
func AddNode(head *ListNode, v int) *ListNode {
newNode := &ListNode{Val: v, Next: nil}
if head == nil {
return newNode
}
current := head
for current.Next != nil {
current = current.Next
}
current.Next = newNode
return head
}
// TraverseSingleList 遍历单链表
func TraverseSingleList(t *ListNode) {
if t == nil {
fmt.Println("-> 空链表!")
return
}
for t != nil {
fmt.Printf("%d -> ", t.Val)
t = t.Next
}
fmt.Println()
}
// SearchSingleListNode 查找单链表节点
func SearchSingleListNode(t *ListNode, v int) bool {
if Head == nil {
t = &ListNode{v, nil}
Head = t
return false
}
if v == t.Val {
return true
}
if t.Next == nil {
return false
}
return SearchSingleListNode(t.Next, v)
}
// GetSingleListSize 获取链表长度
func GetSingleListSize(t *ListNode) int {
if t == nil {
fmt.Println("-> 空链表!")
return 0
}
i := 0
for t != nil {
i++
t = t.Next
}
return i
}
到了这里,关于【数据结构】Golang 实现单链表的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!