以下内容,包含多位博主文章借鉴和自己理解,如有错误,欢迎指正
线性表是逻辑概念,只要所有的数据在逻辑上是一维的都可以认为是线性表。线性表包括顺序表(栈,队列等),链表(栈,队列等)。跟线性表相对的概念应该是树或者堆。
顺序表是空间概念,指的是所有的数据在存储空间上顺序排列,而跟具体的操作方式无关。与顺序表相对的概念只有链表。
顺序存储的优点:存储密度大;不能方便地运用各种逻辑结构的存储表示(以树为例);
插入和删除相对于链表不太方便。
对于用顺序表来存储树,可以将树想象成满树,空的节点就在线性表中写成NULL,但是非常浪费空间。
线性表的顺序存储结构是一种随机存取的存储结构。
随机存取:随机给一个数,可以立刻给出结果。
顺序存储:不管给的数是什么,都只能按照一个一个存或者取。(在链表中出现)
若线性表最常用的操作是存取第i个元素及其前驱和后继元素的值,为了提高效率,应采用顺序表的存储方式。(考的是随机存取)
若线性表最常用的操作是获取当前节点的前驱和后继元素的值,应采用双向链表存储。
顺序表:能够实现随机存取。并在最后位置插入/删除方便。
![]()
I. 通过起始地址+每块大小*中间有几块=第i个节点具体地址
线性表插入,删除,按值查找 平均时间复杂度都为O(n)
I.顺序表可以随机存取,效率自然比链表高
II.顺序表:由随机存取特性,可直接对3,4号位置的数据进行更改;链表:要依次读取1,2号元素的指针,然后哦才能找到3号数据的位置,再进行对3,4号元素的修改操作。
III.顺序输出,两者时间复杂度相等O(n),效率相同。
选C
顺序表访问第i个元素:一次计算得到地址,一次访存直接完成(随机存取)。时间为常数O(1)
第i个位置插入元素:1.时间复杂度是指最坏复杂度
2.即使忘记是最坏的结果,也应该选平均情况来计算时间复杂度