go语言 单向链表
//示例45
package main
import "fmt"
func main() {
var intlink Link
for i := 0; i < 10; i++ {
intlink.InsertTail(i)
}
intlink.Trans()
}
//节点
type LinkNode struct {
data interface{} //内容
next *LinkNode //next指针
}
//链表
type Link struct {
head *LinkNode //头节点
tail *LinkNode //尾节点
}
//头插法
func (p *Link) InsertHead(data interface{}) {
//获取一个节点
node := &LinkNode{
data: data,
next: nil,
}
//判断是否第一个节点,如果是头节点和尾节点都是自己
if p.tail == nil && p.head == nil {
p.tail = node
p.head = node
return
}
//如果不是第一个节点 新节点的next是链表的头节点
node.next = p.head
//链表头节点指向新节点
p.head = node
}
//尾插法
func (p *Link) InsertTail(data interface{}) {
node := &LinkNode{
data: data,
next: nil,
}
//判断是否第一个节点,如果是头指针和尾指针都是自己
if p.tail == nil && p.head == nil {
p.tail = node
p.head = node
return
}
//链表的尾节点的next指针指向新节点
p.tail.next = node
//链表的尾节点指向新节点
p.tail = node
}
//遍历
func (p *Link) Trans() {
q := p.head
for q != nil {
fmt.Println(q.data)
q = q.next //移动指针
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具