兄弟连区块链培训教程分享Go语言golang单链表实现

栏目: Go · 发布时间: 6年前

目前而言区块链是一门新兴前沿行业,但也是一门综合复杂性强的学科,学习区块链需要有一定的学习能力与知识基础。然而很多线下培训机构却只顾收取高额报名费用,将用户的实际情况置若罔闻,不设报名门槛,不对报名人员进行甄别筛选,实则是一种不负责任的态度。

兄弟连教育 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)

}


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

像计算机科学家一样思考Python

像计算机科学家一样思考Python

(美)Allen B.Downey / 赵普明 / 人民邮电出版社 / 2013-8 / 49

《像计算机科学家一样思考python》按照培养读者像计算机科学家一样的思维方式的思路来教授python语言编程。全书贯穿的主体是如何思考、设计、开发的方法,而具体的编程语言,只是提供一个具体场景方便介绍的媒介。《像计算机科学家一样思考python》并不是一本介绍语言的书,而是一本介绍编程思想的书。和其他编程设计语言书籍不同,它不拘泥于语言细节,而是尝试从初学者的角度出发,用生动的示例和丰富的练习来......一起来看看 《像计算机科学家一样思考Python》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具