1、存取(读/写)方式
     
顺序表可以顺序存取,也可以随机存取,在第i个位置上执行存取操作,顺序表仅需一次访问.
      链表只能从表头开始依次顺序存取,链表在第i个位置执行存取则需从表头开始依次访问i次.

2、逻辑结构与物理结构
      顺序表和链表都属于线性表,都是线性结构。
      顺序存储逻辑上相邻的元素,对应的物理存储位置也相邻,链式存储逻辑上相邻的元素物理存储位置不一定相邻,对应的逻辑关系是通过指针链接来表示的。

3、创销、增删改查

基本操作—创建

  • 顺序表:需要预分配大片连续空间。 若分配空间过小,则之后不 方便拓展容量;若分配空间 过大,则浪费内存资源。
    静态分配:静态数组,容量不可改变。
    动态分配:动态数组(malloc、free),容量可以改变,但是需要移动大量元素,时间代价高。
  • 链表:只需分配一个头结点(也可 以不要头结点,只声明一个 头指针),之后方便拓展

基本操作 - 销毁

  •   顺序表:修改 Length = 0
  • 链表:依次删除各个结点 (free)。

基本操作 - 增/删

  • 顺序表:插入 / 删除元素要将后续元素后移 / 前移
    时间复杂度O(n),时间开销主要来自于移动元素
    若数据元素很大,则移动的时间代价很高
  • 链表:插入 / 删除元素只需要修改指针即可
    时间复杂度O(n),时间开销主要来自查找目标元素
    查找元素的时间代价更低

基本操作 - 查找

  • 顺序表
    按位查找:时间复杂度O(1)
    按值查找:时间复杂度O(n),若表内元素有序,可在 O(log2n) 时间内找到(二分法)
  • 链表
    按位查找:时间复杂度O(n)
    按值查找:时间复杂度O(n)


开放性问题答题思路

Q:请描述顺序表和链表的 bla bla bla… 实现线性表时,用顺序表还是链表好?

A:顺序表和链表的逻辑结构都是线性结构,都属于线性表。 但是二者的存储结构不同,顺序表采用顺序存储…(特点,带来的优点缺点);链表采用链式存储…(特 点、导致的优缺点)。 由于采用不同的存储方式实现,因此基本操作的实现效率也不同。当初始化时…;当插入一个数据元 素时…;当删除一个数据元素时…;当查找一个数据元素时...

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐