Go语言单链表实现方法

本文实例讲述了Go语言单链表实现方法。分享给大家供大家参考。具体如下:

成都创新互联长期为上千多家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为岷县企业提供专业的做网站、成都做网站岷县网站改版等技术服务。拥有十余年丰富建站经验和众多成功案例,为您定制开发。

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语言单链表实现方法
网站URL:http://bzwzjz.com/article/gooeoh.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 网站制作 成都网站制作 网站建设方案 成都网站建设公司 专业网站建设 高端网站设计推广 企业网站建设 成都网站设计 app网站建设 高端定制网站设计 企业网站制作 网站制作报价 网站设计公司 成都网站建设 成都企业网站建设公司 手机网站设计 重庆手机网站建设 重庆企业网站建设 成都网站建设 成都网站设计 成都网站建设 成都商城网站制作