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语言程序设计有所帮助。