• 企业400电话
  • 网络优化推广
  • AI电话机器人
  • 呼叫中心
  • 全 部 栏 目

    网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Go语言单链表实现方法
    POST TIME:2021-10-18 17:47

    本文实例讲述了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语言程序设计有所帮助。

    您可能感兴趣的文章:
    • 详解go语言单链表及其常用方法的实现
    • python/golang 删除链表中的元素
    • python/golang实现循环链表的示例代码
    • Go实现双向链表的示例代码
    • golang双链表的实现代码示例
    • go实现反转链表
    上一篇:go语言实现顺序存储的栈
    下一篇:Go语言实现顺序存储的线性表实例
  • 相关文章
  • 

    关于我们 | 付款方式 | 荣誉资质 | 业务提交 | 代理合作


    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    X

    截屏,微信识别二维码

    微信号:veteran88

    (点击微信号复制,添加好友)

     打开微信