【计算机】数据结构-严蔚敏/清华大学P4

第二章 线性表

顺序映像的C语言描述

#define LIST_INIT_SIZE 80
          //线性表存储空间的初始分配量
#define LISTINCREMENT 10
          //线性表存储空间的分配增量
typedef struct {
  ElemType *elem;//存储空间基址
  int length;//当前长度
  int listsize;//当前分配的存储容量
               //(以sizeof(ElemType)为单位)
} SqList;//俗称顺序表

线性表的初始化操作

Status InitList_Sq( SqList& L ){
  //构造一个空的线性表
  L.elem = (ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
  if(!L.elem) exit(OVERFLOW);
  L.length = 0;
  L.listsize = LIST_INIT_SIZE;
  return OK;
} //InitList_Sq

线性表操作
  LocateElem(L,e,compare())的实现:

int LocateElem_Sq(SqList L,ElemType e){
  Status(*compare)(ElemType,ElemType)){
    i = 1;  //i的初值为第1元素的位序
    p = L.elem;//p的初值为第1元素的存储位置
    while(i<=L.length && !(*compare)(*p++,e)){
      ++i;
      if(i<=L.length) return i;
      else return 0;
    }
  }
}//LocateElem_Sq

线性表操作
  ListInsert(&L,i,e)的实现:
问:插入元素时,线性表的逻辑结构发生什么变化?
(a₁,...,aᵢ₋₁,aᵢ,...,aₙ)改变为
          (a₁,...,aᵢ₋₁,e,aᵢ,...,aₙ)

a₁ a₂ ... aᵢ₋₁ aᵢ ... aₙ
a₁ a₂ ... aᵢ₋₁ e aᵢ ... aₙ

求算法的时间复杂度为:O(ListLength(L)),和表长一样。

考虑平均的情况:

线性表操作
    Listelete(&L,i,&e)的实现:
问:删除元素时,
    线性表的逻辑结构发生什么变化?
(a₁,...,aᵢ₋₁,aᵢ,aᵢ₊₁,...,aₙ)改变为
          (a₁,...,aᵢ₋₁,aᵢ₊₁,...,aₙ)

a₁ a₂ ... aᵢ₋₁ aᵢ aᵢ₊₁ ... aₙ
a₁ a₂ ... aᵢ₋₁ aᵢ₊₁ ... aₙ

此算法的时间复杂度为:O(ListLength(L)),和表长一样。

考虑平均的情况:

2.3线性表类型的实现

--链式映象

一、单链表

用一组地址任意的存储单元存放线性表中的数据元素
  以元素(数据元素的映像)
      +指针(指示后继元素存储位置的)
  =结点(表示数据元素)
  以"结点的序列"表示线性表-----称作链表

以线性表中第一个数据元素 a₁ 的存储地址作为线性表的地址,称作线性表的头指针

二、结点和单链表的C语言描述

Typedef struct LNode {
  ElemType data;//数据域
  struct Lnode *next;//指针域
} LNode,*LinkList;

线性表的操作GetElem(L,i,&e)
在链表中的实现:
基本操作为:使指针p始终指向线性表中第j个数据元素

算法的时间复杂度为:O(ListLength(L))

线性表的操作ListInsert(L,i,&e)
在链表中的实现:
基本操作为:找到线性表中第i-1个结点,修改其指向后继的指针
有序对<aᵢ₋₁,aᵢ>改变为<aᵢ₋₁,e>和<e,aᵢ>

算法的时间复杂度为:O(ListLength(L))

线性表的操作ListDelete(L,i,&e)
在链表中的实现:
基本操作为:找到线性表中第i-1个结点,修改其指向后继的指针
有序对<aᵢ₋₁,aᵢ>和<aᵢ,aᵢ₊₁>改变为<aᵢ₋₁,aᵢ₊₁>

-----------------END-----------------

【计算机】数据结构-严蔚敏/清华大学P4相关推荐

  1. 【计算机】数据结构-严蔚敏/清华大学P3

    [计算机]数据结构-严蔚敏/清华大学P1 第二章    线  性表 线性结构 是 一个数据元素的有序(次序)集 线性结构的基本特征: 1.  集合中必存在唯一的一个"第一元素": ...

  2. 数据结构严蔚敏清华大学pdf_2019年清华大学自动化系控制工程专业大数据方向考研经验分享...

    基本情况(以下内容仅代表个人观点) 我目前就读于西南某双非石油工程专业,2019考研报考清华大学自动化系大数据工程专业,一志愿复试被刷,侥幸调剂录取至微电子系.初试总分346分(政治-63 + 英语一 ...

  3. c语言实现bf算法的定位函数,数据结构c语言版严蔚敏清华大学出版社第四章串.ppt...

    数据结构c语言版严蔚敏清华大学出版社第四章串 模式匹配(定位) 设有主串S和子串T(将S称为目标串,将T称为模式串),在主串S中,从位置start开始查找,如若在主串S中找到一个与子串T相等的子串,则 ...

  4. 构建线性表的c语言代码,数据结构严蔚敏C语言版—线性表顺序存储结构(顺序表)C语言实现相关代码...

    1.运行环境 这里说明一下这里所有的C语言代码都是基于code::blocks 20.03编译运行的.当然一些其他集成开发环境应该也是可以的,个人不太喜欢功能太过强大的IDE,因为那同样意味着相关设置 ...

  5. 数据结构 严蔚敏 第二章 线性表

    数据结构 严蔚敏 第二章 线性表 线性表:由n个(n>=0)数据特征相同的元素构成的有限序列. 线性表的类型定义表示和实现 顺序表 存储单元地址连续 随机存取 若每个元素占用 m 个存储单元,以 ...

  6. 数据结构严蔚敏C语言版—线性表顺序存储结构(顺序表)C语言实现相关代码

    数据结构严蔚敏C语言版-线性表顺序存储结构(顺序表)C语言实现相关代码 1.运行环境 2.准备工作 1)项目构建 1>新建一个SeqList项目 2>新建两个文件Sources和Heade ...

  7. 数据结构----严蔚敏

    最近一直想找一本纯数据结构的书来学习,找来找去都没有找到一本合适的书籍,相比之下国内的书籍之中,严蔚敏和吴伟民的还算是经典版了,很多国内其他数据结构教材都参考这本书的.但缺点是很多都是伪代码,对编程初 ...

  8. 有关数据结构基础知识(数据结构 严蔚敏版)

    1. 数据结构是一门研究非数值计算程序设计中的操作对象 以及这些对象之间的关系和操作的学科 2. 研究包括逻辑结构和存储结构 1) 逻辑结构(从具体问题抽象出来的数学模型)分为 集合结构 线性结构 树 ...

  9. 数据结构----严蔚敏 (链表)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.链表是什么? 二.使用步骤 总结 前言 数据结构是软件技术.网络技术等计算机类专业的一门重要的专业基础课程,其理论 ...

  10. 字符串静态顺序结构C/C++实现(数据结构严蔚敏版)

    1.头文件String.h #include<stdio.h> #include<stdlib.h> #include<string.h> #include< ...

最新文章

  1. HPAIC人类蛋白质图谱分类挑战赛金牌经验分享
  2. 「预警」尽快升级FastJson版本,避免恶意请求导致OOM!
  3. c语言顺序表有效元素长度,C语言版数据结构顺序表的问题
  4. zipkin 原理和使用
  5. centOS配置国内镜像
  6. dYdX 2020年度回顾:累计交易量增长40倍
  7. python3 二进制文件比较_《Python 3程序开发指南(第2版•修订版)》——7.4 随机存取二进制文件...
  8. 如何用c#来制作一个activeX控件或类似的东西
  9. 使用函数 imnoise 对图像添加噪声
  10. 服务器虚拟化分步实施,服务器虚拟化解决实施方案.doc
  11. 不知道如何压缩PDF?教你3个压缩PDF文件方法
  12. 纯平显示器_绿色计算:切换到液晶纯平显示器
  13. DWcs4右下角没有html文件,dreamweaver cs4 (dwcs4)安装图文教程
  14. C语言学习日记(2)——写个Hello,World测试一下
  15. placement new 讲解
  16. 论举办黑客马拉松能为企业带来什么好处| 黑客松| 极客马拉松
  17. 计算机网络部分复习题
  18. 机器学习入门之PCA与ICA
  19. robot_state_publisher不能正常启动的解决之法
  20. 从“圈地运动”到“技术开放”,互联互通迈入深水区

热门文章

  1. e-HR推动知识型企业人力资源管理提升
  2. 使用Perl5获取有道词典释义
  3. python编程与几何图形pdf_《程序员数学:使用 Python 进行 3D 图形,机器学习和仿真》PDF 免费下载...
  4. Linux下使用锐捷客户端连接网络,以及遇到的问题
  5. comps电磁场模拟软件_opera电磁仿真软件
  6. 5G+AIoT“零碳”解决方案 | 模组助力“4S” 融合的新一代智能汽车驶入快车道
  7. 集装箱校验码校验规则
  8. VASP、Lammps快速上手神器——MedeA软件
  9. Java中基本数据类型的转换
  10. 精益创业实战 - 第3章 制作自己的精益画布