91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Go語言單鏈表實現方法

發布時間:2020-10-10 05:24:13 來源:腳本之家 閱讀:158 作者:OSC首席鍵客 欄目:編程語言

本文實例講述了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語言程序設計有所幫助。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

普兰县| 会昌县| 屯门区| 郓城县| 泽州县| 富锦市| 本溪市| 嘉荫县| 罗城| 中超| 沧州市| 莫力| 博罗县| 启东市| 武清区| 石河子市| 城固县| 栖霞市| 米脂县| 云梦县| 丰原市| 延津县| 宣威市| 河北区| 宜春市| 凭祥市| 乌鲁木齐县| 大理市| 万荣县| 竹山县| 襄樊市| 灌南县| 吉林市| 宁安市| 黄浦区| 乌海市| 汾西县| 临西县| 高台县| 林州市| 海城市|