国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Golang > 正文

Go語言單鏈表實現方法

2020-04-01 19:16:22
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了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語言程序設計有所幫助。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 罗田县| 谷城县| 双流县| 浑源县| 万载县| 和田县| 彭州市| 长沙县| 莎车县| 克拉玛依市| 平阴县| 册亨县| 凉山| 五家渠市| 奎屯市| 岳西县| 旌德县| 天全县| 翁牛特旗| 墨江| 淮北市| 北流市| 怀安县| 鸡东县| 莱阳市| 高青县| 仪征市| 南靖县| 太谷县| 昂仁县| 息烽县| 赤城县| 青川县| 淮安市| 牙克石市| 鹤峰县| 翁源县| 隆林| 霸州市| 沈阳市| 泰顺县|