链表

链表

  • 相对于数组,链表不需要连续的存储地址
  • 每一个节点会记录下一个节点的地址

参考

单链表

节点内部结构

1
2
3
4
type node struct {
Data int
Next *node
}
  • 头节点没有data,有next
  • 尾节点有data,没有next

删除节点

例如a->b->c,删除b,流程如下:

  • 根据b.next获取c的地址
  • 要怎么找到a,并将a.next赋值为c的地址

    插入节点

    例如a->c之间插入b,流程如下:
  • 创建b节点
  • 根据a.next获取c的地址,然后赋值为b.next
  • 将b的地址赋值给a.next

双链表

节点内部结构

1
2
3
4
5
type node struct {
Data int
Next *node
Prev *node
}