Go语言单链表实现方法
本文实例讲述了Go语言单链表实现方法。分享给大家供大家参考。具体如下:
1.singlechain.go代码如下:
//////////
//单链表--线性表
packagesinglechain
//定义节点
typeNodestruct{
Dataint
Next*Node
}
/*
*返回第一个节点
*h头结点
*/
funcGetFirst(h*Node)*Node{
ifh.Next==nil{
returnnil
}
returnh.Next
}
/*
*返回最后一个节点
*h头结点
*/
funcGetLast(h*Node)*Node{
ifh.Next==nil{
returnnil
}
i:=h
fori.Next!=nil{
i=i.Next
ifi.Next==nil{
returni
}
}
returnnil
}
//取长度
funcGetLength(h*Node)int{
variint=0
n:=h
forn.Next!=nil{
i++
n=n.Next
}
returni
}
//插入一个节点
//h:头结点
//d:要插入的节点
//p:要插入的位置
funcInsert(h,d*Node,pint)bool{
ifh.Next==nil{
h.Next=d
returntrue
}
i:=0
n:=h
forn.Next!=nil{
i++
ifi==p{
ifn.Next.Next==nil{
n.Next=d
returntrue
}else{
d.Next=n.Next
n.Next=d.Next
returntrue
}
}
n=n.Next
ifn.Next==nil{
n.Next=d
returntrue
}
}
returnfalse
}
//取出指定节点
funcGetLoc(h*Node,pint)*Node{
ifp<0||p>GetLength(h){
returnnil
}
variint=0
n:=h
forn.Next!=nil{
i++
n=n.Next
ifi==p{
returnn
}
}
returnnil
}2.main.go代码如下:
packagemain
import"fmt"
import"list/singlechain"
funcmain(){
//初始化一个头结点
varhsinglechain.Node
//往链表插入10个元素
fori:=1;i<=10;i++{
vardsinglechain.Node
d.Data=i
singlechain.Insert(&h,&d,i)
fmt.Println(singlechain.GetLoc(&h,i))
}
fmt.Println(singlechain.GetLength(&h))
fmt.Println(singlechain.GetFirst(&h))
fmt.Println(singlechain.GetLast(&h))
fmt.Println(singlechain.GetLoc(&h,6))
}
希望本文所述对大家的Go语言程序设计有所帮助。