线性表
听名字也知道线性表是可以理解为一个一维的东西.类似于一条线.所有数据都是链接在这一条线上.
这条线可以分为两种:1.顺序存储.类似数组,其中的元素在物理空间上是紧紧相依的.2.链式存储.线性表间数据是通过指针相连的,在物理上不是紧紧相依的.
这就带来了线性表的两种特性.
顺序访问:
对于链表来说,因为在内存中不是顺序存放的,为了访问某个元素,必须从链头开始顺着指针查找.
随机访问:
对于顺序存储的线性表来说.因为在内存中是顺序存放的.可以直接通过下标(譬如数组)来访问某个元素.
数组的随机访问
不过对于数组来说.虽说数组比较适合查找,并且根据下标随机访问的时间复杂度为O(1).但是,"插入"和"删除"就显得比较低效了.
数组的插入和删除
当一个长度为n的数组我们在它的i(i < n)的位置进行添加/删除工作,在保持数组的顺序的前提下,添加时,我们需要将in的位置的元素往后挪动一位.然后插入到i.删除时,我们需要先删除i.然后in的元素往前挪动一位.
插入和删除的时间复杂度为O(n)