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

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

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

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

}


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

查看所有标签

猜你喜欢:

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

JAVA 2核心技术 卷Ⅰ

JAVA 2核心技术 卷Ⅰ

[美] 霍斯特曼、[美] 科奈尔 / 叶乃文、邝劲筠 等 / 机械工业出版社 / 2006-5 / 88.00元

本书是Java技术经典参考书,多年畅销不衰,第7版在保留以前版本风格的基础上,涵盖Java2开发平台标准版J2SE5.0的基础知识,主要内容包括面各对象程序设计、反射与代理、接口与内部类、事件监听器模型、使用Swing UI工具箱进行图形用户界面设计,异常处理、流输入/输出和对象序列化、泛型程序设计等。 本书内容翔实、深入浅出,附有大量程序实例,极具实用价值,是Java初学者和Java程序员......一起来看看 《JAVA 2核心技术 卷Ⅰ》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

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

HTML 编码/解码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具