用golang写的一个链表

golang数据结构-链表 此文章用于数据结构学习记录 阅读详情

近期专门研究了一下golang语言,这个语言还比较新,语法上结合了很多优点,比如动态绑定,多返回值,支持函数对象,如果有C/C++,java,js或python语言基础的朋友应该能很快能迁移到这个新语言上来,goroutine机制帮助我们能更好的写并发程序,总之,golang确实是很有前途的语言,但要具有像java这么丰富的生态链还有很长的路要走。

废话不多说,直接上码

package datastruct

//定义节点
type Node struct{
	data int
	next *Node
}

/***************
* 返回第一个节点
* h 头结点
 ***************/
func getFirst(h *Node) *Node{
	if h.next == nil{
		return nil
	}
	return h.next
}

/***************
* 返回最后一个节点
 */
func getLast(h *Node) *Node{
	if h.next == nil{
		return nil
	}
	var i *Node = h
	for i.next != nil{
		i = i.next
		if i.next == nil{
			return i
		}
	}
	return nil
}

/***************
* 返回长度
 ***************/
func length(h *Node) int{
	var i int = 0
	n := h
	for n.next != nil{
		i++
		n = n.next
	}
	return i
}

/***************
* 插入节点
 ***************/
func insert(h *Node, d *Node, i int) *Node{
	var node *Node = h
	var j int = 1
	for node.next != nil{
		if i == j{
			d.next = node.next
			node.next = d
		}
		node = node.next
		j++
	}
	return h
}
/***************
* 删除节点
 ***************/
func deleteNode(h *Node, i int) *Node{
	var node *Node = h
	var j int = 1
	for node.next != nil{
		if i == j{
			node.next = node.next.next
			break
		}
		node = node.next
		j++
	}
	return h
}
/***************
* 获取节点
 ***************/
func get(h *Node, i int) *Node{
	var node *Node = h
	var j int = 1
	for node.next != nil{
		if i == j{
			return node
		}
		node = node.next
		j++
	}
	return nil
}


Go实战--实现一个单向链表(The way to go) 生命不止,继续 go go go !!!今天跟大家分享一下数据介绍相关的实现吧,那就已链表为例吧。golang中为我们提供了一个list,我们先了解一下container/list。container/list功能: Package list implements a doubly linked list.看清楚了吧,是双向链表。一些方法: func (e *Element) Next() *E 阅读详情

相关推荐

Cadence IC618与Spectre231安装配置全攻略:License、环境变量与依赖检查

EDA工具部署中,License管理与环境变量隔离是核心难点。FlexLM作为通用授权机制,通过守护进程和端口配置实现工具授权;环境变量则控制工具路径与库加载顺序,避免版本冲突。合理配置可确保IC618与Spectre231稳定运行,提升仿真效率。典型应用场景包括模拟IC设计、高校实验室及企业级EDA环境。本文聚焦Cadence IC618与Spectre231的安装实践,详解License配置、环境隔离及依赖检查,助你快速搭建可靠设计环境。

weixin_28721917的博客 324

golang数据结构——链表

golang链表详解

lp15929801907的博客 1876

VASP编译疑难解析—手动配置icx路径解决libintel64报错

本文针对VASP编译过程中执行`make libintel64`时遇到的`icx: 没有那个文件或目录`报错,提供了详细的解决方案。核心在于手动定位Intel oneAPI编译器的绝对路径,并修改makefile中的编译器变量,从而解决因系统PATH环境变量未正确设置导致的libintel64编译失败问题。

weixin_28834765的博客 125

golang数据结构 - 链表

基本数据结构与算法-golang实现

weixin_41395435的博客 533

一文读懂 CST 时/频域求解器

本文系统介绍了CST Studio Suite中的关键网格技术——六面体网格、四面体网格以及TLM求解器专用的八叉树非均匀网格技术。重点阐述了六面体网格的三项核心技术:理想边界拟合(PBA)技术可精确处理曲面边界,薄片技术(TST)能高效模拟薄层结构,自适应八叉树网格实现计算资源最优分配。同时详细对比了六面体网格与四面体网格的特点及适用场景,前者适用于系统级EMC/EMI分析等时域问题,后者擅长处理复杂曲面和异质材料的频域问题。

一只豌豆象的博客 463

仿真学习系列(四十九):Sigrity仿真之电容库制作

在高速电路设计中,电源完整性(PI)是确保系统稳定、可靠运行的关键因素。随着电子产品对性能的要求不断提升,PDN(电源分配网络)的设计与优化变得尤为重要。为了确保电源网络在高速工作状态下不会引发电压波动和信号干扰,我们需要在设计中精确地选择电容器进行优化,而电容库的制作则是这一过程的核心。 OptimizePI作为一个强大的电源完整性优化工具,能够帮助设计师根据不同的目标,批量进行PDN仿真,以得出最佳电容选择。

案例文章,高速信号 223

Golang 结构体链表

文章目录1. 什么是链表2. 单项链表3. 使用 struct 定义单链表4. 尾部添加节点5. 头部插入节点6. 指定节点后添加新节点7. 删除节点 1. 什么是链表 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。 链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 使用链表结构可以避免在使用数组时需要预先知道数据大小的缺点,

不要因为走的太远而忘了为什么出发 2447

第 5 篇:责任链模式 (Chain of Responsibility) —— 协议栈的流水线

本文介绍了责任链模式在嵌入式通信协议解析中的应用。针对传统"面条式"代码维护困难的问题,提出将各协议解析器解耦为独立处理单元,通过链表形式串联。文章详细展示了模式实现:定义抽象处理者接口、实现具体协议处理器、构建链表管理器。该方案具有内存占用低(O(1)栈空间)、可动态扩展、支持优先级调整等优势,并探讨了性能优化策略及动态插件系统等扩展应用,为嵌入式通信协议处理提供了清晰的架构方案。

一路往蓝-Anbo 的博客 177

Golang 链表详解

Golang 链表详解

wgchen 953

YOLOv8集成CPCA(Combined Parallel Convolutional Attention)注意力机制模块YOLOv8深度教程

YOLOv8集成CPCA注意力模块教程摘要 本教程详细介绍了如何将YOLOv8 CPCA(Combined Parallel Convolutional Attention)注意力模块集成到YOLOv8目标检测框架中。CPCA模块结合了通道注意力和多尺度空间注意力机制,通过全局池化和双路径融合增强通道特征,并利用多尺度深度可分离卷积捕获空间上下文信息。YOLOv8 教程包含完整的实现步骤:创建CPCA模块代码、修改YOLOv8模型解析逻辑、编写自定义配置文件,YOLOv8YOLOv8YOLOv8YOLOv8

FJN110的博客 1619

华为OD新系统机试真题 2026.5.10 - 美观的灯笼

华为OD新系统机试真题【美观的灯笼】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【美观的灯笼】

qq_45776114的博客 640

(10min撸一个UnlimitChannel(无限Channel)解决并发问题~

在Golang当中,Channel分为有缓冲的和无缓冲的,无缓冲的Channel可以用于同步,对于有缓冲的Channel容量在一开始的时候就已经创建好,后续无法改变,在一些特殊的场景下不太适用。有些同学好奇无限缓存的Channel是不是真的有无限的缓存?写测试验证此Channel是否达到预期效果。具体的中间层设计如下。

JUSTDZZ的博客 978

SAP SEGW 事物码里的 Association 建模方式

Association 模型用于描述 OData 模型里不同 Entity Type 之间的关联关系。我们来看一个具体的例子:Principal Entity(主体):代表 association 的主导端。Cardinality(基数):指定主体实体类型和依赖实体类型之间的关系。按 F4 或点击从列表中选择。关联的多重性如下:为引用约束()指定以下参数,目的是将主体实体类型的每个键,关联到从属实体类型的一个属性:Referential Constraints 的一个例子如下: 引用约束(Referenti

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 909

Golang实现一个简单的单链表

Golang实现一个简单的单链表 package list type Node struct { Data interface{} Next *Node } type List struct { size uint32 head *Node tail *Node } // 构造方法,将所有变量置空 func (list *List) init() { (*list).size = 0 (*list).head = nil (*list).tail = nil } func (list

Gerald的博客 442

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Golang 实现通用链表类

package main import "fmt" type LinkNode struct { Data interface{} Next *LinkNode } type Link struct { Head *LinkNode Tail *LinkNode } func (p *Link) InsertHead(data interface{}) { node := &...

微微一笑 491

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【面试官让我十分钟实现一个链表?一个双向带头循环链表甩给面试官】

带头双向循环链表的实现

m0_55752775的博客 3491

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

力扣:反转链表(golang实现)

题目描述 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 思路 拿好三个指针,cur,pre,next next是用来临时保存下次要遍历的节点 pre是用来临时保存上次遍历过的节点 cur是修改节点,作用是修改Next变量,指向pre 题解 func reverseList(head *ListNode) *L

qq_43578218的博客 921

用golang写一个简单的游戏

事情是这样子的,前阵子我想重新把算法学习一下,在看到动态规划的时候,莫名想到这些算法题目就跟游戏一样,每个游戏都有规则,要过关,就要在游戏规则下达到特定的目标。所以,我萌生了把算法题做成一个游戏的想法,不管什么算法都行,规则我可以自己定义。 那么,做个游戏,它总要有界面,自然我不会写gui,暂时也没有想用golang的gui库的想法。所以我的第一步是用终端先实现一个,在界面上能够显示出东西。这个要求对于golang来说一点都不高。 再来,是游戏规则的设定,这个游戏,我会分几个版本去完成它,多以第一个版本,我

onepunchgo的博客 2513

Golang 链表实现

Golang本身自带实现list的基本库:container/list;具体使用方法,可以查看Go基础库文档:https://studygolang.com/pkgdoc下面是不适用基础库的实现方法,优化方式有很多,实现思路仅供参考:下文实现了单向链表、循环链表、双向链表,单链表是基础,其他的链表基本都是根据单链表演化的。先把代码贴上,后续分解代码: 3.2 增删改查图示: 链表操作主要分为:增、删、改、查; 根据实现过程,增删操作类似、改查操作类似增加和删除增加节点: 步骤:① 创建插入的节点,找到

weixin_44558408的博客 1235

go实现链表

https://studygolang.com/articles/2760?fr=sidebar package main import ( "fmt" "os" ) /** golang实现单链表 单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。 链表中的数据以节点来表示,每个节点的构成:元素(数据元素的映像)+ 指针(指向后继元素存储位置)。元素是...

Yu的博客 4965

用Golang写一个搜索引擎

用Golang写一个搜索引擎 猜你喜欢 golang入门-- 一个2D的图形库学习 golang入门--一个简单的http client golang的第一个deadlock LiteJob,一个Golang的本地任务调度器 再次自我黑客马拉松--不用第三方库实现一个基于golang的web service 如何利用golang

daisongwan的博客 5533

golang 实现单链表

package main import "fmt" /* 使用golang实现单链表 add 操作:在链表首部添加 append 操作:在链表尾部添加,从头部找到最后一个元素,把最后一个元素指针指向需要添加的元素 insert 操作:在指定位置添加,往中间插入元素,需要调整插入该位置的元素之前的指针,还有该元素的指针需要指向下一位 delete 操作:删除指定的元素,删除任意位置的...

lucky404的博客 1468

Go Singly 链表

Go Singly Linked List package main import "fmt" // chapter singly Linked List type Chapter struct{ Order int Title string Text *Content Next *Chapter } // content singly Linked List type Content struct{ Page int Title string Text string Next *C

SinkRain 1万+

【Golang】go实现单链表

go语言实现单链表,支持尾插和尾删操作 package main import ( "fmt" ) type ListNode struct { val int next *ListNode } func CreateNode(value int) *ListNode { return &ListNode{value, nil} } func (list *ListN...

smx_dd的博客 397

Go语言中的链表与双向链表实现

本文详细介绍了Go语言中链表和双向链表的实现及应用。链表是一种灵活的数据结构,适用于动态数据的管理和顺序查找。文章通过代码实例展示了如何添加节点、遍历链表、查找节点以及计算链表长度。此外,还探讨了双向链表的实现,它允许双向遍历并提供更灵活的插入和删除操作。文章深入解析了这些数据结构的优势与局限,为读者在实际开发中高效使用链表提供了参考。

一个被知识诅咒的人 1761

Golang——实现双链表

双链表(Doubly Linked List)是一种链表数据结构,它的每个节点都有两个链接:一个指向前一个节点(如果有的话),另一个指向下一个节点(如果有的话)。这使得双链表在遍历、插入和删除节点时都具有一定的灵活性。双链表和单链表的基本操作有很多相似的。。

qq_61453210的博客 923
上一篇: 开发一款开源爬虫框架系列(五):爬虫架构的一些新思路
下一篇: python3.5+django1.10:selenium.common.exceptions.WebDriverException->moveto did not match a known com
闲庭细步
博客等级 码龄18年 304粉丝 86原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值