1.链表定义:链表是一种通过指针串联在一起的线性结构。每个节点由两部分组成,一个是数据域,一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思)
2.链表的入口节点称为链表的头结点也就是head。
3.链表的类型:(1)单链表; (2)双链表:单链表的指针域只能指向节点的下一个节点,双链表中的每个节点由两个指针域,一个指向下一个节点,一个指向上一个节点。双链表既可以向前查询也可以向后查询;(3)循环链表:就是链表首尾相连,可以用来解决约瑟夫环的问题。
4.链表的存储方式:数组在内存中是连续分布的,但是链表在内存中不是连续分布的,链表是通过指针域的指针链接在内存中的各个节点。所以链表中的节点在内存中不是连续分布的,而是散乱分布在内存中的某地址上,分配机制取决于操作系统的内存管理。
5.链表的使用场景:数组在定义的时候,长度是固定的,如果想改变数组的长度,就需要重新定义一个新的数组;而链表的长度可以是不固定的,并且可以动态增删,适用于数据量不固定,频繁增删,较少查询的场景。
6.定义一个链表:
class ListNode:def __init__(self, val, next=None):self.val = valself.next = next
知识总结: 1.搞清楚链表的结构与数组的区别,链表的节点包含两个构成部件:数据域和指针域,其中指针域可以为NULL或者一个或者两个,取决于节点和链表的类型。2.清楚链表和数组的分别使用场景,熟悉链表的实现方式。