链表是线性结构中的第二种结构,与顺序表不同的是 链表在物理存储结构上非连续,非顺序
元素的逻辑顺序是通过指向链表的指针链接次序实现
由于链表是在增删新元素时,才会动态增加新节点, 因而不用像顺序表一样考虑容量capacity的概念,只需要保留 有效数据长度 size即可。
顺序表与链表的比较:
内存碎片:频繁的像内存申请小的空间
空间使用率谁更高不确定 ,缓存使用率顺序表更高
局部原理性:一般数据访问的某个位置之后,下一次一般会访问的位置就在其周围
链表 由一系列的节点构成,每个节点包含两个域,指针域和数据域
插入新元素时,先找到前一个节点,将前一个节点指针域保存的指针修改为新节点的地址。插入的新节点的指针域指向下一个节点
删除元素时,同样先找到前一个节点,将其指针域所保存的被删除元素的地址修改为被删元素的指针域里保存的下一个元素的地址,再将被删元素的空间释放掉。
带头结点的单链表,即使是空链表也还有个独立的头节点,可以不用二级指针
双向链表同时保存向后的指针和向前的指针
循环链表的尾不指向空而指向头