ArrayList、LinkedList数据结构(线性表原理分析

2022-10-24  本文已影响0人  隔壁小新
1. 线性表描述

线性表是具有相同数据结构的n(n>=0)的数据元素的有序序列,其中n为表长,当n=0时线性表就是一个空表,若用L命名线性表,则其一般的表示为:
L=(a1,a2,a3,a4, ...,an)
线性表中的几个概念

  • a1,为表头,an为表尾
  • 除第一个元素外,每个元素有且仅有一个直接前驱,除最后一个元素外,每个节点有且仅有一个直接后继,


    线性表

    线性表的存储/物理结构实现有:

  • 顺序表(顺序存储)(java实现案例:ArrayList)
  • 链表(链式存储)(java实现案例:LinkedList)
2. 顺序表:

用顺序存储的方式实现线性表。
顺序存储:把逻辑上相邻的元素存储在物理位置上也相邻存储。元素之间的关系由存储单元的邻接关系来体现


顺序存储

通过创建顺序表的时候,定义一个固定长度的数组作为顺序表,从而避免了动态数组的开辟新数组,复制数组的过程,缺点在于,初始的时候需要计算好当前顺序表要插入多少数据,从而创建多长的顺序表

使用动态数组进行实现,定义一个固定长度的数组作为顺序表,当顺序表存满的时候,通过重写定义一个大于原先数组的新数组,作为新的顺序表,并且把原数组中的数据复制到新数组中,从而实现动态数组的效果。
优点:初始时候不需要考虑数组容量的大小,更灵活的存数据。
缺点: 需要重新创建新数组,复制原先数据数据到新数组,

3. 链表(两种实现)

3.1 单链表

线性表的链式存储又称单链表,他是指通过一组任意的存储单元来存储线性表中
的元素。为了建立数据之间的线性关系,对每个链表结点,除存放元素自身的信息外,还需要存放一个指向其后继结点的指针。


单链表图
3.1.1 单链表的两种实现:
带头节点的单链表
3.1.2.单链表的建立
单链表的建立
单链表图

头插法: 每次有了新数据从头位置开始插入
尾插法: 每次有了新的数据从尾部开始插入

3.2 双链表
上一篇 下一篇

猜你喜欢

热点阅读