Go语言单链表实现方法 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

    作者:OSC首席键客 字体:[增加 减小] 类型:转载

    这篇文章主要介绍了Go语言单链表实现方法,实例分析了基于Go语言的单链表实现原理与使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下

    本文实例讲述了Go语言单链表实现方法,

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语言单链表实现方法》(https://www.unjs.com)。

最新文章