单链表-LinkedList
链表(Linked list)是一种常见的基础数据结构,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针。由于不是必须按顺序存储,链表在插入的时候可以达到O(1),比顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要O(n)的时间。
单链表的示意图:
说明:一般来说,为了比较好的对单链表进行增删改查,我们都会给它设置一个头结点,头结点的作用主要是用来标识链表头,本身这个结点不存放数据。
golang单链表示例代码:
package main
import (
"fmt"
)
type studentNode struct {
no int
name string
age int
next *studentNode
}
//给链表插入一个结点
//编写第一种插入方法,在单链表的最后加入
func insertStudentNode(head *studentNode, newStudentNode *studentNode) {
//思路:
//1.先找到该链表的最后这个结点
//2.创建一个辅助结点
temp := head
for {
if temp.next == nil {
//表示找到最后
break
}
temp = temp.next //让temp不断的指向下一个结点
}
//3.将newStudentNode加入到链表的最后
temp.next = newStudentNode
}
//第二种插入方法,根据no的编号从大到小插入
func sortInsertStudentNode(head *studentNode, newStudentNode *studentNode) {
//思路
//1.找到适当的位置
//2.创建一个辅助结点
temp := head
flag := true
//把newStudentNode.no和temp.next.no作比较
for {
if temp.next == nil {
//说明已经到链表的