线性表的定义: 前面的节点叫做前驱,后面的节点叫做后继,线性表规定:只有一个节点具有前驱没有后继(尾节点),只有一个节点只有后继没有前驱(头节点)。
按照存储来说,又分为顺序存储,和链存储式.
顺序储存是将多个节点存放到一个连续的空间,这种方式的优点很明显易于理解,并且在查询上来说非常简便。只需要只要第一个节点的位置和查询节点的下标就可以注解的定位到。确定是需要连续的空间,并且在删除某个节点之后为了保证连续性的话,我们需要将元素进行移动,最差的情况下时间负责度为n.
链式储存的方式刚好和顺序存储不太一样,在存储上并不是连续的,而是通过各个节点通过地址进行串联的,也就是每个节点需要额外的储存前驱或者是后继的储存位置。链式表的好处在于对节点的增加和删除可以很简便的完成,时间复制度为1.但是对于查找来说,最差的情况需要n,链式表又分为 单链表 循环链表和 双链接
链式表和顺序表各有各的优点.在使用的时候需要考虑很多情况,因为虽然链式的插入效率高,但是查询效率比顺序的低,内存暂用比较多。而顺序表则是查询效率高,但是需要连续的空间,以及插入的效率不高.除了这些外,在JAVA中因为顺序表在初始化的时候已经指定了空间,当空间满了之后,需要进行扩容,扩容的原理是将原有的数组拷贝到一个更大的空间,然后释放以前的空间,这是一个很耗 资源的操作,所以还要看是否需要经常的扩容。