快速理解数据结构中链表
组织数据作用的线性表分为顺序表和链表
顺序表:平常所使用的各类数组均为顺序表,即存储逻辑顺序和物理顺序相同。较常见,不再多提。
链表:又分为单链表,循环链表,双链表。 不一定物理相邻。
所谓链接的手段或者说方式,外界展现的就是以对象存储对象的形式(本质:引用地址的相互关联),更通俗一些就是一个对象 是他逻辑排序上一个(双链表:包含下一个)对象的属性,即每个对象以属性的方式存储了逻辑相邻的对象。
*在JAVA中专业术语叫通过对象引用(指针的表现方式)进行指针(实际地址的存储位置)的链接。 这个对象叫结点:一个数据加一个指针(即数据+位 置)。
通过这种方式,在链表类设计中,就是通过一个位置标记(表现为一个对象),来互相检索,插入,删除等。
(比如:现在位置在第2个对象,你想检索第5个对象,顺序表只需用索引【4】搞定,链表则通过逻辑关系,因为第2个包含第3个对象(地址) , 第3个属性中能提取出第4个,以此类推)
1.下面讲 单,双,循环的区别:
单指方向单即只能向后查找,就是前边所说的2包括3,3包括4,最后一个为空,单向。
循环就是在单基础上末尾保存了头对象。
双也就是前后都可以查找,区别就是在属性里1包括2,也包括末尾;2包括1也包括3;类推
2.所有链表都可分为带头结点,和不带头结点方式,区别就是带头结点的头指针指向一个没数据只有地址的对象。应用都一 样, 就是构造方式在插入第一个对象的时候有区别,带头结点方式因为插入第一个时不用更换头结点(也就是前边说的通过位置标 记的起点)更加方便。
3.比较一下顺序表和链表的优缺点:
顺序表 优点:支持随机读取,内存空间利用高 缺点:插入,删除时需要移动位置
链表 相反
PS:还有一种叫仿真链表,属于顺序表,就是一个顺序表存对象,一个顺序表存每个对象下一个逻辑对象的索引。以此仿真链表形 式。不常用