链表就是 一个元素 通过指针连结 另一个元素, 元素之间在内存中不是连续的
定义结构体:
type Student struct {
Name string
Age int32
Score float32
next *Student
}
如上这种结构体, 有一个属性是指针类型的
这种结构体的多个变量, 就可以构成链表
现有三个Student变量ABC, 如果: A中包含B的地址, B中包含C的地址, 则ABC构成链表
链表中的第一个变量称为表头
添加元素: 将新元素的地址赋值给上一个元素的指针属性, 如:
var first *Student = &Student {
Name : "lisi",
Age : 16,
Score : 90.5,
}
head.next = first // 地址赋值给上一个元素的next属性
向链表元素后循环抛入元素, 再遍历元素
package main
import (
"fmt"
"strconv"
"math/rand"
)
/*链表结构体*/
type Student struct {
Name string
Age int32
Score float32
next *Student
}
/*遍历链表*/
func eachList(h *Student) { // 参数为一个链表的表头