【数据结构】Golang 实现单链表

概念

通过指针将一组零散的内存块串联在一起 , 把内存块称为链表的“结点”。 记录下个结点地址的指针叫作后继指针 next ,第一个结点叫作头结点,把最后一个结点叫作尾结点

代码实现

定义单链表

在 golang 中可以通过结构体定义单链表:

// ListNode 单链表
type ListNode struct {
	Val  int
	Next *ListNode
}
操作单链表

使用 golang 实现单链表常用操作:添加节点、遍历链表、查找链表节点、获取链表长度

// 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
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值