[NEFU 数据结构] 第 2 章 线性表 知识点整理

[NEFU 数据结构] 第 2 章 线性表 知识点整理

阅读须知

  • 需求指向:
    此博客用于应付NEFU数据结构考试,基于题目进行整理,不适合想深入学习数据结构与算法艺术的同学。

  • 前置知识:
    C语言

  • 参考资料:
    数据结构C语言版|第二版 严蔚敏
    数据结构C语言版习题解析与实验指导|第二版 严蔚敏

  • 推荐博客
    [NEFU]数据结构 知识点整理和代码实现

一、思维导图

在这里插入图片描述

二、考点

2.1 线性表的定义和特点

  • 存在唯一的一个被称作第一个的数据元素
  • 存在唯一的一个被称作最后一个的数据元素
  • 除第一个之外,结构中的每个数据都只有一个前驱
  • 除最后一个之外,结构中的每个数据都只有一个后继

2.4 线性表的顺序表示和实现

  • 逻辑上相邻的元素,其物理次序也是相邻的
  • L O C ( a i ) = L O C ( a 1 ) + ( i − 1 ) ∗ L LOC(a_i)=LOC(a_1)+(i-1)*L LOC(ai)=LOC(a1)+(i1)L
  • 线性表的存储结构是一种随机存储结构
  • 顺序表的基本操作实现
操作时间复杂度其他
初始化申请空间,构建空表
取值 O ( 1 ) O(1) O(1) e [ i − 1 ] e[i-1] e[i1]为第i个元素
查找 O ( N ) O(N) O(N) A S L = n + 1 2 ASL=\frac {n+1} 2 ASL=2n+1
插入 O ( N ) O(N) O(N) E i n t = n 2 E_{int}=\frac n2 Eint=2n , 第i个位置插入移动 n − i + 1 n-i+1 ni+1
删除 O ( N ) O(N) O(N) E d e l = n − 1 2 E_{del}=\frac{n-1} 2 Edel=2n1 , 删除第i个移动 n − i n-i ni

2.5 线性表的链式表示和实现

  • 存储单元可以连续也可以不连续
  • 结点包含数据域和指针域
  • 首元结点:存储第一个数据元素的结点
  • 头结点:首元结点之前附设的结点
  • 头指针:指向链表中第一个结点的指针
  • 单链表是非随机存取的存储结构,也称为顺序存取
  • 所有结点通过指针的链接而组织成单链表
  • 单链表基本操作的实现
操作时间复杂度其他
初始化
取值 O ( N ) O(N) O(N) A S L = n − 1 2 ASL=\frac {n-1} 2 ASL=2n1
查找 O ( N ) O(N) O(N)
插入 O ( 1 ) O(1) O(1)确定位置还是 O ( N ) O(N) O(N)
删除 O ( 1 ) O(1) O(1)确定位置还是 O ( N ) O(N) O(N)
创建(前插法) O ( N ) O(N) O(N)
创建(后插法) O ( N ) O(N) O(N)
创建一个包含N个结点的有序单链表 O ( N 2 ) O(N^2) O(N2)
查找直接后继 O ( 1 ) O(1) O(1)
查找前驱 O ( N ) O(N) O(N)双向链表优化
  • 循环链表中止条件:p!=L,p->next!=L
  • 循环链表设立尾指针不设头指针,两个线性表合并复杂度 O ( 1 ) O(1) O(1)
  • 双向链表插入删除操作复杂度为 O ( N ) O(N) O(N)

2.6 顺序表和链表的比较

  • 存 储 密 度 = 数 据 元 素 本 身 占 用 存 储 量 结 点 结 构 占 用 的 存 储 量 存储密度=\frac {数据元素本身占用存储量} {结点结构占用的存储量} =
  • 顺序表存储密度1,链表存储密度小于1
  • 背下面两个表
    在这里插入图片描述
    在这里插入图片描述

2.7 线性表的应用

  • 线性表的合并: O ( n ∗ m ) O(n*m) O(nm)
  • 有序表的合并
    仍然按照原序排列:最好 O ( m i n ( m , n ) ) O(min(m,n)) O(min(m,n)),最坏 O ( m + n ) O(m+n) O(m+n)
    按照原序逆序排列: O ( m + n ) O(m+n) O(m+n)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值