链表

链表(Linked list),是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer)。

每个节点包含下一个节点的地址,这样把所有的节点串起来了,通常把 链表中的第一个节点叫做链表头

单链表

package main

import (
"fmt"
) type test struct {
name string
age uint8
intro string
next *test
} func printList(str *test) {
for str != nil {
fmt.Println(*str)
str = str.next
}
} func main() {
var test1 test
test1.name = "zhangsan"
test1.age = 123
test1.intro = "dasdasd" var test2 test
test2.name = "lisi"
test2.age = 33
test2.intro = "dadasdasdsdasd" test1.next = &test2 printList(&test1)
}

链表的头部插入

package main

import (
"fmt"
"math/rand"
) type test struct {
name string
age int
intro string
next *test
} func printlist(list *test) {
for list != nil {
fmt.Println(*list)
list = list.next
}
} func insertTop(list *test) {
for n := 0; n < 10; n++ {
var student *test = &test{
name: fmt.Sprintf("stu_%d", n),
age: rand.Intn(100),
intro: fmt.Sprintf("stu_dasdasdas_%d", n),
}
student.next = list //将student的next插入到list之前,即stu.next=list
list = student //将stu赋值为list // list.next = student.next
}
printlist(list)
} func main() { var stu *test = &test{
name: "lisi",
age: rand.Intn(100),
intro: "aaaaaaaaaaaaa",
} insertTop(stu) }

package main

import (
"fmt"
"math/rand"
) type test struct {
name string
age int
intro string
next *test
} func printlist(list *test) {
for list != nil {
fmt.Println(*list)
list = list.next
}
} func insertTop(list **test) { //指针的指针 for n := 0; n <= 10; n++ {
var student *test = &test{
name: fmt.Sprintf("stu_%d", n),
age: rand.Intn(100),
intro: fmt.Sprintf("stu__%d", n),
} student.next = *list
*list = student
}
} func main() {
var stu *test = &test{
name: "lisi",
age: rand.Intn(100),
intro: "啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊",
} insertTop(&stu)
printlist(stu)
}

尾部插入

package main

import (
"fmt"
"math/rand"
) type test struct {
name string
age int
intro string
next *test
} func printlist(list *test) {
for list != nil {
fmt.Println(*list)
list = list.next
}
} func insertTail(list *test) { var test1 = list
for n := 0; n <= 10; n++ {
student := test{
name: fmt.Sprintf("stu_%d", n),
age: rand.Intn(100),
intro: fmt.Sprintf("stustustustustustustu%d", n),
} test1.next = &student
test1 = &student
}
} func main() { var stu = test{
name: "zhangsan",
age: 16,
intro: "zhangsanlisi",
} insertTail(&stu)
fmt.Println(&stu) }

golang基础数据结构链表的更多相关文章

  1. golang基础数据结构

    一.概述: 这里主要讨论四种类型---数组.slice.map和结构体 数组和结构体是聚合类型:它们的值都是由很多个元素或者成员字段的值组成.数组是有同构元素组成--每个数组的元素的类型相同:结构体为 ...

  2. 数据结构和算法(Golang实现)(12)常见数据结构-链表

    链表 讲数据结构就离不开讲链表.因为数据结构是用来组织数据的,如何将一个数据关联到另外一个数据呢?链表可以将数据和数据之间关联起来,从一个数据指向另外一个数据. 一.链表 定义: 链表由一个个数据节点 ...

  3. C语言 - 基础数据结构和算法 - 企业链表

    听黑马程序员教程<基础数据结构和算法 (C版本)>,照着老师所讲抄的, 视频地址https://www.bilibili.com/video/BV1vE411f7Jh?p=1 喜欢的朋友可 ...

  4. C语言 - 基础数据结构和算法 - 单向链表

    听黑马程序员教程<基础数据结构和算法 (C版本)>,照着老师所讲抄的, 视频地址https://www.bilibili.com/video/BV1vE411f7Jh?p=1 喜欢的朋友可 ...

  5. Redis 基础数据结构之二 list(列表)

    Redis 有 5 种基础数据结构,分别为:string (字符串).list (列表).set (集合).hash (哈希) 和 zset (有序集合). 今天来说一下list(列表)这种数据结构, ...

  6. golang基础知识之encoding/json package

    golang基础知识之json 简介 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.可以去json.org 查看json标准的清晰定义.json pack ...

  7. GoLang基础数据类型-切片(slice)详解

    GoLang基础数据类型-切片(slice)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 数组的长度在定义之后无法再次修改:数组是值类型,每次传递都将产生一份副本.显然这种数 ...

  8. GoLang基础数据类型--->数组(array)详解

    GoLang基础数据类型--->数组(array)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Golang数组简介 数组是Go语言编程中最常用的数据结构之一.顾名 ...

  9. Python 数据结构 链表

    什么是时间复杂度 时间频度:一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才知道.但是我们不可能也没有必要对每一个算法都进行上机测试,只需要知道那个算法花费的时间多,那个算法花费得 ...

随机推荐

  1. log4php的使用方法与详细配置

    log4php的使用 首先引入logger.php文件.log4php可以通过引入logger.php来完成自动加载的过程.文件位置如下: 日志记录器自身没有定义日志的输出目的地和格式,所以我们通常需 ...

  2. Golang 入门~~基础知识

    变量声明 //通用形式,指定变量名,变量类型,变量值 var name int = 99 fmt.Println(name) //指定变量名,以及变量类型,未指定值的时候默认是类型零值 var age ...

  3. [Wiki].NET框架

    .NET框架 建议将.NET Framework 3.0并入本条目或章节.(讨论)  .NET框架 .NET框架的组件堆栈 开发者 Microsoft 初始版本 2002年2月13日,​16年前 稳定 ...

  4. Docker 修改默认存储路径的一个方法

    1. 前期安装创建centOS的虚拟机时发现自己对linux的挂载点不清楚, 造成挂载点的分配不太均匀,如图: root / 节点的大小设置的比较小 /home路径设置的一直比较大 但是docker ...

  5. 破解xlsm文件的VBA项目密码和xlsx的工作簿保护密码

    工具 待破解的xlsm文件.Excel2010.Hex Editor 步骤 1.修改.xlsm后缀为.zip 2.使用压缩软件打开,进入xl目录找到vbaProject.bin文件,解压出来 3.使用 ...

  6. JIRA & GitHub

    JIRA & GitHub https://confluence.atlassian.com/adminjiracloud/connect-jira-cloud-to-github-81418 ...

  7. BZOJ4001[TJOI2015]概率论——卡特兰数

    题目描述 输入 输入一个正整数N,代表有根树的结点数 输出 输出这棵树期望的叶子节点数.要求误差小于1e-9 样例输入 1 样例输出 1.000000000 提示 1<=N<=10^9 设 ...

  8. BZOJ2141排队——树状数组套权值线段树(带修改的主席树)

    题目描述 排排坐,吃果果,生果甜嗦嗦,大家笑呵呵.你一个,我一个,大的分给你,小的留给我,吃完果果唱支歌,大家 乐和和.红星幼儿园的小朋友们排起了长长地队伍,准备吃果果.不过因为小朋友们的身高有所区别 ...

  9. day7 新三级菜单

    # 简单吧简单吧,用动态变量不停的改变进行遍历 menu = { "北京":{ "朝阳":{ "国贸":{ "CICC" ...

  10. 自学Python2.8-条件(if、if...else)

    自学Python之路 自学Python2.8-条件(if.if...else) 1.if 判断语句 if语句是用来进行判断的,其使用格式如下:  if 要判断的条件: 条件成立时,要做的事情 当“判断 ...