兄弟連區塊鏈培訓教程分享Go語言golang單鏈表實現

來源:互聯網
上載者:User

  目前而言區塊鏈是一門新興前沿行業,但也是一門綜合複雜性強的學科,學習區塊鏈需要有一定的學習能力與知識基礎。然而很多線下培訓機構卻只顧收取高額報名費用,將使用者的實際情況置若罔聞,不設報名門檻,不對報名人員進行甄別篩選,實則是一種不負責任的態度。

  兄弟連教育Go全棧與區塊鏈培訓課程已從多層面顛覆傳統培訓機構運營思維,區塊鏈課程的開設在一定程度上加大了福士對這一專業領域的認知,其構建起的區塊鏈世界也必將在未來為我們呈現更加高效的生活。


package main


//鏈表實現

import (

    "fmt"

    "os"

)


//定義錯誤常量

const (

    ERROR = -1000000001

)


//定義元素類型

type Element int64


//定義節點

type LinkNode struct {

Data Element   //資料域

Nest *LinkNode //指標域,指向下一個節點

}


//函數介面

type LinkNoder interface {

Add(head *LinkNode, new *LinkNode)              //後面添加

Delete(head *LinkNode, index int)               //刪除指定index位置元素

Insert(head *LinkNode, index int, data Element) //在指定index位置插入元素

GetLength(head *LinkNode) int                   //擷取長度

Search(head *LinkNode, data Element)            //查詢元素的位置

GetData(head *LinkNode, index int) Element      //擷取指定index位置的元素

}


//添加 頭結點,資料

func Add(head *LinkNode, data Element) {

point := head //臨時指標

    for point.Nest != nil {

point = point.Nest //移位

    }

var node LinkNode  //新節點

point.Nest = &node //賦值

    node.Data = data


head.Data = Element(GetLength(head)) //列印全部的資料


    if GetLength(head) > 1 {

        Traverse(head)

    }


}


//刪除 頭結點 index 位置

func Delete(head *LinkNode, index int) Element {

//判斷index合法性

    if index < 0 || index > GetLength(head) {

        fmt.Println("please check index")

        return ERROR

    } else {

        point := head

        for i := 0; i < index-1; i++ {

point = point.Nest //移位

        }

point.Nest = point.Nest.Nest //賦值

        data := point.Nest.Data

        return data

    }

}


//插入 頭結點 index位置 data元素

func Insert(head *LinkNode, index int, data Element) {

//檢驗index合法性

    if index < 0 || index > GetLength(head) {

        fmt.Println("please check index")

    } else {

        point := head

        for i := 0; i < index-1; i++ {

point = point.Nest //移位

        }

var node LinkNode //新節點,賦值

        node.Data = data

        node.Nest = point.Nest

        point.Nest = &node

    }

}


//擷取長度 頭結點

func GetLength(head *LinkNode) int {

    point := head

    var length int

    for point.Nest != nil {

        length++

        point = point.Nest

    }

    return length

}


//搜尋 頭結點 data元素

func Search(head *LinkNode, data Element) {

    point := head

    index := 0

    for point.Nest != nil {

        if point.Data == data {

            fmt.Println(data, "exist at", index, "th")

            break

        } else {

            index++

            point = point.Nest

            if index > GetLength(head)-1 {

                fmt.Println(data, "not exist at")

                break

            }

            continue

        }

    }

}


//擷取data 頭結點 index位置

func GetData(head *LinkNode, index int) Element {

    point := head

    if index < 0 || index > GetLength(head) {

        fmt.Println("please check index")

        return ERROR

    } else {

        for i := 0; i < index; i++ {

            point = point.Nest

        }

        return point.Data

    }

}


//遍曆 頭結點

func Traverse(head *LinkNode) {

    point := head.Nest

    for point.Nest != nil {

        fmt.Println(point.Data)

        point = point.Nest

    }

    fmt.Println("Traverse OK!")

}


//主函數測試

func main() {

    var head LinkNode = LinkNode{Data: 0, Nest: nil}

    head.Data = 0

    var nodeArray []Element

    for i := 0; i < 10; i++ {

        nodeArray = append(nodeArray, Element(i+1+i*100))

        Add(&head, nodeArray[i])


    }


    Delete(&head, 3)

    Search(&head, 2032)

    Insert(&head, 23, 10010)

    Traverse(&head)

    fmt.Println("data is", GetData(&head, 6))

    fmt.Println("length:", GetLength(&head))

    os.Exit(0)

}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.