golang基础数据结构链表
链表
链表(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基础数据结构链表的更多相关文章
- golang基础数据结构
一.概述: 这里主要讨论四种类型---数组.slice.map和结构体 数组和结构体是聚合类型:它们的值都是由很多个元素或者成员字段的值组成.数组是有同构元素组成--每个数组的元素的类型相同:结构体为 ...
- 数据结构和算法(Golang实现)(12)常见数据结构-链表
链表 讲数据结构就离不开讲链表.因为数据结构是用来组织数据的,如何将一个数据关联到另外一个数据呢?链表可以将数据和数据之间关联起来,从一个数据指向另外一个数据. 一.链表 定义: 链表由一个个数据节点 ...
- C语言 - 基础数据结构和算法 - 企业链表
听黑马程序员教程<基础数据结构和算法 (C版本)>,照着老师所讲抄的, 视频地址https://www.bilibili.com/video/BV1vE411f7Jh?p=1 喜欢的朋友可 ...
- C语言 - 基础数据结构和算法 - 单向链表
听黑马程序员教程<基础数据结构和算法 (C版本)>,照着老师所讲抄的, 视频地址https://www.bilibili.com/video/BV1vE411f7Jh?p=1 喜欢的朋友可 ...
- Redis 基础数据结构之二 list(列表)
Redis 有 5 种基础数据结构,分别为:string (字符串).list (列表).set (集合).hash (哈希) 和 zset (有序集合). 今天来说一下list(列表)这种数据结构, ...
- golang基础知识之encoding/json package
golang基础知识之json 简介 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.可以去json.org 查看json标准的清晰定义.json pack ...
- GoLang基础数据类型-切片(slice)详解
GoLang基础数据类型-切片(slice)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 数组的长度在定义之后无法再次修改:数组是值类型,每次传递都将产生一份副本.显然这种数 ...
- GoLang基础数据类型--->数组(array)详解
GoLang基础数据类型--->数组(array)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Golang数组简介 数组是Go语言编程中最常用的数据结构之一.顾名 ...
- Python 数据结构 链表
什么是时间复杂度 时间频度:一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才知道.但是我们不可能也没有必要对每一个算法都进行上机测试,只需要知道那个算法花费的时间多,那个算法花费得 ...
随机推荐
- logback基本入门
1. logback的定义 Logback是由log4j创始人设计的另一个开源日志组件,官方网站: http://logback.qos.ch.它当前分为下面下个模块: logback-core:其它 ...
- PAT 1007 素数对猜想
https://pintia.cn/problem-sets/994805260223102976/problems/994805317546655744 让我们定义 d~n~ 为:d~n~ = p~ ...
- SQLSERVER 备份数据库的注意事项
1. SQLSERVER 有一个压缩备份集的功能,能够实现大概15%的压缩比(跟数据类型不同而不同) 之前竟然没发现...浪费了好多磁盘资源.. 多学习多思考..
- Python表达式与运算符
表达式与运算符 Python语言支持以下类型的运算符: 算术运算符 比较(关系)运算符 赋值运算符 逻辑运算符 位运算符 成员运算符 身份运算符 运算符优先级 算术运算符 运算符 描述 + 加 - 两 ...
- Alpha、伪Beta 发布个人感想与体会
1.Alpha版本 在Alpha版本发布时,我在Fantacy组,那时的体会我已在前面写过,现在回想起来,我觉得自己的决定似乎做的并不是很糟糕,因为来到新的团队里,我学到了很多东西,认识了很多技术很好 ...
- 关于virtualenv python环境引用 pycharm相关配置的使用讨论
今天总算决定来搞一波以前从来没有弄清楚的环境问题,也觉得是时候弄明白了. 这里先说关于python的环境引用,再谈到virtualenv最后再谈论我使用的pycharm5.0关于是用python环境的 ...
- python之发送HTML内容的邮件
# 发送html内容的邮件 import smtplib, time, os from email.mime.text import MIMEText from email.header import ...
- python之datetime类
datetime.time时间类,一般用于显示当地时间 import datetime # 新建对象 datetime_obj = datetime.time(hour=12, minute=20, ...
- 普通javabean 获得项目的绝对路径
方式一:String path = RequestContext.class.getResource("/").getFile();
- BZOJ5337 [TJOI2018] 碱基序列 【哈希】【动态规划】
题目分析: 这道题的难点在于要取模,而题面没有写. 容易想到一个O(1E7)的dp.KMP或者哈希得到相关位置然后对于相关位置判断上一个位置有多少种情况. 代码: #include<bits/s ...