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

news/2025/2/22 15:48:21/

概念

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

代码实现

定义单链表

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

// ListNode 单链表
type ListNode struct {Val  intNext *ListNode
}

操作单链表

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

// AddNode 添加节点
func AddNode(head *ListNode, v int) *ListNode {newNode := &ListNode{Val: v, Next: nil}if head == nil {return newNode}current := headfor current.Next != nil {current = current.Next}current.Next = newNodereturn 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 = treturn 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 := 0for t != nil {i++t = t.Next}return i
}

http://www.ppmy.cn/news/1074408.html

相关文章

高基数类别特征预处理:平均数编码 | 京东云技术团队

一 前言 对于一个类别特征,如果这个特征的取值非常多,则称它为高基数(high-cardinality)类别特征。在深度学习场景中,对于类别特征我们一般采用Embedding的方式,通过预训练或直接训练的方式将类别特征值编…

docker命令整理

一、docker镜像 查找镜像:docker search 镜像名 拉取镜像:docker pull 镜像名:标签 删除镜像:docker rmi 镜像名:标签 进入Dockerfile目录,使用Dockerfile构建镜像:docker build -t testimg:v1.0 . 二、创建容器并运行…

使用生成式 AI 和 ML 模型进行电子邮件和移动主题行优化

结合使用生成式 AI 和 ML 模型,根据语气和受众自动创建引人注目的主题行和标题,以实现最大程度的参与。 电子邮件和推送通知的主题行和标题在确定参与率方面发挥着重要作用。数字通信需要精心设计引人注目的主题行和简洁的推送通知标题来吸引用户的注意力。营销人员根据要传递…

LCD驱动

一、Linux 下 LCD 驱动简析 1.与裸机的异同 在 Linux 中应用程序最终也是通过操作 RGB LCD 的显存来实现在 LCD 上显示字符、图片等信息,但是Linux系统的内存管理严格,使用显存需要申请,因为虚拟内存的存在,驱动程序设置的显存和应…

股票历史数据下载 api

1 网址 Nasdaq Data Link 2 url 测试 https://www.quandl.com/api/v3/datasets/WIKI/AAPL.json?api_key注册的apikey 3 Quandl提供不同的订阅计划,每个订阅计划都有不同的数据访问权限和API请求次数限制。具体收费方式如下:免费订阅计划&#xff1…

AUTOSAR从入门到精通-【应用篇】参照AUTOSAR架构的柴油车后处理集成电控系统软件设计与研究(续)

目录 3.3底层驱动模块开发 3.3.1利用S-Function编写底层驱动模块 3.3.2编写TLC文件来控制自动代码生成过程

Android 之 LayoutInflater (布局服务)

本节引言: 本节继续带来的是Android系统服务中的LayoutInflater(布局服务),说到布局,大家第一时间 可能想起的是写完一个布局的xml,然后调用Activity的setContentView()加载布局,然后把他显示 到屏幕上是吧~其实这个底…

前端调用电脑摄像头

项目中需要前端调用,所以做了如下操作 先看一下效果吧 主要是基于vue3,通过canvas把画面转成base64的形式,然后是把base64转成 file文件,最后调用了一下上传接口 以下是代码 进入页面先调用一下摄像头 navigator.mediaDevices.ge…