数据结构第二章线性表知识总结(严蔚敏)

  • 线性表基本概念
  • 抽象数据类型
    • 概念
    • 抽象数据类型的标准格式与线性表的对比
    • 线性表的抽象数据类型
  • 线性表的顺序表示
    • 顺序表定义
    • 顺序表上基本操作的实现
      • 存储结构
      • 初始化:构造一个空的顺序表
      • 取值(根据数组下标i获取相应位置数据元素的内容)
      • 查找(根据指定数据获取数据所在的位置)
      • 插入
      • 删除
  • 线性表的链式表示

线性表基本概念

线性表:n(n>=0)个具有相同类型的数据元素(结点)组成的有限序列

特点:
①只有一个首结点和尾结点
②除尾结点外,其他结点只有一个直接前驱和一个直接后继

注意区分:
线性表是一种逻辑结构,表示元素之间一对一的相邻关系
顺序表和链表是指存储结构

抽象数据类型

概念

第一章基本概念的数据类型里介绍了抽象数据类型的概念
抽象数据类型的定义,取决于它的一组逻辑特性,与其在计算机内部存储是如何表示和实现无关。

抽象数据类型的标准格式与线性表的对比


图左 —> 标准格式 , 图右 —>线性表的抽象数据类型

线性表的抽象数据类型


对于不同应用,线性表的基本操作是不同的,上述操作是最基本的。对于实际问题中涉及关于线性表的复杂操作,完全可以用基本操作来实现。比如,实现两个线性表集合 A 与 B 的并集操作,即使得集合 A = A U B,简单说,就是把存在 B 中但并不存在 A 中的数据元素插入到 A 中。
算法分析:
循环遍历集合 B 的每个元素,判断当前元素是否存在 A 中,若不存在,则插入到 A 中。
假设 La 标识集合 A,Lb 标识集合 B,则实现的代码如下:

//将所有在线性表 Lb 中但不在 La 中的数据元素插入到 La 中
void List_Union(List *La, List *Lb){int La_len, Lb_len, i;ElemType e;                        //声明与 La 与 Lb 相同的数据元素 eLa_len = ListLength(La);           //求 La 线性表长度Lb_len = ListLength(Lb);           //求 Lb 线性表长度for(i = 1; i < Lb_len; i++) {      //获取 Lb 中第 i 个元素赋给 eGetElem(Lb, i ,e);if(!LocateElem(La, e, equal))  //判断 La 中是否存在和 e 相同的数据元素ListInsert(La, ++La_len, e); //插入}}

本算法对于 List_Union 操作,用到前面线性表的基本操作:ListLength、GetElem、LocateElem、ListInsert 等,可见对于复杂操作的个性化操作,其实就是把基本操作组合起来。
注意:
上面这个函数 List_Union 是没办法直接在编译器上面运行的,因为我们很多具体函数
都没实现,比如 ListLength、GetElem、LocateElem、ListInsert 这几个函数我们都没有进行具体的实现。在现实写代码,这样的代码就是错误的,没办法运行的。这只是用代码或者伪代码来展示你的思想,也就是将解决问题的办法转化为数据结构思想。

线性表的顺序表示

顺序表定义

用一组地址连续的存储单元依次存储线性表中的数据元素
(逻辑上相邻的两个元素在物理位置上也相邻)ps:数组方式存储

特点:
 长度固定,必须在分配内存之前确定数组的长度。
 存储空间连续,即允许元素的随机访问。
 存储密度大,内存中存储的全部是数据元素。
 要访问特定元素,可以使用索引访问,时间复杂度为

数据结构第二章线性表知识总结(严蔚敏)相关推荐

  1. 数据结构第二章-线性表(详细知识点总结)

    目录 第二章 线性表 2.1 线性表的定义和操作 2.1.1 线性表的定义 2.1.2 线性表的基本操作 2.2线性表的顺序表示 2.2.1 顺序表的定义 2.2.2 顺序表上基本操作的实现 2.3 ...

  2. C语言数据结构-第二章线性表-电大

    第二章线性表--内容简介 本章将进入线性结构的学习. 线性结构是最简单.最常用的一种数据结构. 本章将学习线性表的定义.顺序和链式两种存储方式及相应存储结构上的运算实现.通过典型示例训练,掌握线性表的 ...

  3. 数据结构(C语言版) 第二章 线性表 知识梳理+作业习题详解

    目录 一.线性表顺序存储结构(顺序表) 0.线性表的基本概念 1.样例引入:多项式相加 二.线性表链式存储结构(链表) 0.链表的基本概念 1.前插法代码实例 2.链表尾插法完整代码附带各种操作 三. ...

  4. 王道408数据结构——第二章 线性表

    文章目录 一.线性表的定义和基本操作 线性表 顺序表 1.插入操作 2.删除操作 3.按值查找(顺序查找) 二.单链表 1. 头插法 2. 尾插法 3. 按序号查找 4. 按值查找 5. 插入结点 6 ...

  5. C++ 数据结构第二章 ----- 线性表

    文章目录 线性表 线性表的顺序存储 一.基本概念 二.基本操作 线性表的链式存储 一.基本概念 二.基本操作 三.双链表 (1) 双链表的插入操作 (2) 双链表的删除操作 四.循环链表 五.循环双链 ...

  6. 数据结构第二章线性表学习笔记

    1.    C++程序设计模板   (关于template的解释)[以下内容摘自百度] 函数声明格式 template <class(或typename) any(或任意符合规则的名称)> ...

  7. (王道408考研数据结构)第二章线性表-第三节5:顺序表和链表的比较

    文章目录 一:逻辑结构比较 二:存储结构比较 三:基本操作比较 (1)初始化操作 (2)销毁操作 (3)插入和删除 (4)查找 顺序表和链表的选取原则 一:逻辑结构比较 顺序表和链表都是线性表,都是线 ...

  8. (王道408考研数据结构)第二章线性表-第三节1:单链表的定义及其操作(插入和删除,建立之尾插和头插)

    文章目录 一:单链表相关 (1)单链表的定义 (2)头指针与头结点 二:单链表代码描述 三:单链表的初始化 四:单链表的插入 五:单链表的删除 六:单链表查找 (1)按位查找 (2)按值查找 七:单链 ...

  9. (王道408考研数据结构)第二章线性表-第二节1:顺序表的定义

    文章目录 一:顺序表实现 (1)静态分配 (2)动态分配 二:顺序表特点 顺序表:也叫做线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素 一:顺序表实现 (1)静态分配 静 ...

  10. (王道408考研数据结构)第二章线性表-第一节:线性表的定义和基本操作

    文章目录 一:线性表的定义 二:线性表的基本操作 一:线性表的定义 线性表(Linear List):零个或多个数据元素的有限序列 元素之间是有顺序的 若元素存在多个,则第一个元素无前驱,最后一个元素 ...

最新文章

  1. 前端各阶段资源,学得完算我输
  2. 开发中使用UEditor编辑器的注意事项
  3. ASC0106硬件连接注意事项
  4. 数据结构与算法 / UUID 和 GUID 区别和联系
  5. Manacher's Algorithm 马拉车算法(最长回文串)
  6. java 外螺旋矩阵_螺旋矩阵的java实现
  7. Git tag常用命令分享
  8. delphi if多个条件_【会计职场】老会计带你玩转Excel,IF函数的使用方法大全!小白必看!...
  9. MiniProfiler.EF6监控调试MVC5和EF6的性能
  10. 苹果手机型号对应表及尺寸
  11. java 打印 日历 详细 注解_Java实现按年月打印日历功能【基于Calendar】
  12. 卫星与太阳的方位角与交会角
  13. 联想计算机管理员权限设置,联想电脑windows10管理员权限开启的4种方法
  14. 两张ID卡,完美消除互相干扰合二为一,实现“一卡”正反两用。
  15. 【JAVASE】IO流基础
  16. qiankun+vue项目开发
  17. vivado batch mode
  18. 提取谷歌游览器Cookie的五重境界
  19. 小虫记之iptables
  20. 杰卡德相似系数(Jaccardsimilarity coefficient)

热门文章

  1. CSS动画:梦幻西游
  2. 图神经网络(GNN)资源帖视频及必读论文
  3. 如何实现业务流程集成
  4. 单板电源设计(LDO、DC/DC)
  5. centos 关机命令_全了 Linux 常用命令大汇集
  6. 【计算机组织与体系结构】实验二:给定指令系统的处理器设计
  7. elementUI Tree组件实现双击事件
  8. 如何成为一名获得 Adobe 国际认证的专业设计师?
  9. 高精度加法(蓝桥杯)
  10. 战争游戏红龙mod简介