Go语言单链表实现方法
发布时间:2020-12-16 19:32:26 所属栏目:大数据 来源:网络整理
导读:本篇章节讲解Go语言单链表实现方法。供大家参考研究。具体如下: 1. singlechain.go代码如下: 复制代码 代码如下: ////////// //单链表 -- 线性表 package singlechain //定义节点 type Node struct { Data int Next *Node } /* * 返回第一个节点 *
本篇章节讲解Go语言单链表实现方法。分享给大家供大家参考。具体如下: 1. singlechain.go代码如下: 复制代码 代码如下: ////////// //单链表 -- 线性表 package singlechain //定义节点 type Node struct { Data int Next *Node } /* * 返回第一个节点 * h 头结点 */ func GetFirst(h *Node) *Node { if h.Next == nil { return nil } return h.Next } /* * 返回最后一个节点 * h 头结点 */ func GetLast(h *Node) *Node { if h.Next == nil { return nil } i := h for i.Next != nil { i = i.Next if i.Next == nil { return i } } return nil } //取长度 func GetLength(h *Node) int { var i int = 0 n := h for n.Next != nil { i++ n = n.Next } return i } //插入一个节点 //h: 头结点 //d:要插入的节点 //p:要插入的位置 func Insert(h,d *Node,p int) bool { if h.Next == nil { h.Next = d return true } i := 0 n := h for n.Next != nil { i++ if i == p { if n.Next.Next == nil { n.Next = d return true } else { d.Next = n.Next n.Next = d.Next return true } } n = n.Next if n.Next == nil { n.Next = d return true } } return false } //取出指定节点 func GetLoc(h *Node,p int) *Node { if p < 0 || p > GetLength(h) { return nil } var i int = 0 n := h for n.Next != nil { i++ n = n.Next if i == p { return n } } return nil } 2. main.go代码如下: 复制代码 代码如下: package main
import "fmt" import "list/singlechain" func main() { //初始化一个头结点 var h singlechain.Node //往链表插入10个元素 for i := 1; i <= 10; i++ { var d singlechain.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语言程序设计有所帮助。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |