`

线性表的实现分析

阅读更多

线性表的实现分析

 顺序存储和链式存储的对比:

  顺序表 链表
空间性能 顺序表的存储空间是静态分布的,需要一个固定长度的数组,因此总有部分数组元素被浪费。 链表的存储空间是动态分布的,因此不会产生空间的浪费。但是需要额外的空间来为每个节点保存引用。
时间性能 顺序表中元素的逻辑顺序和物理存储顺序是保持一致的,因此支持随机读取,在查找、读取方面性能较好。 链表采用链式结构存储数据,因此在插入、删除元素时性能较好。

 

如下图:

 

线性表是增强版数组:

 从某种程度上来讲,线性表是数组的加强:

  • 线性表的长度可以动态改变,但Java数组的长度是固定的;
  • 线性表可以插入元素,数组无法插入元素;
  • 线性表可以删除元素,数组无法删除元素,只能将指定元素置为null或者0;
  • 线性表可以搜索指定元素的位置,数组一般没有此方法;
  • 线性表提供方法来清空所有元素,数组一般没有类似方法

 JDK提供的线性表:

 

 

其中,ArrayList就是顺序线性表,LinkedList就是链式线性表。对于初学者,只要会使用JDK提供的线性表即可,可以查看下相关的源码,对其实现原理有所了解,待小有所成后,可以自己动手编写线性表的实现。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics