【计算机】数据结构-严蔚敏/清华大学P4
【计算机】数据结构-严蔚敏/清华大学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相关推荐
- 【计算机】数据结构-严蔚敏/清华大学P3
[计算机]数据结构-严蔚敏/清华大学P1 第二章 线 性表 线性结构 是 一个数据元素的有序(次序)集 线性结构的基本特征: 1. 集合中必存在唯一的一个"第一元素": ...
- 数据结构严蔚敏清华大学pdf_2019年清华大学自动化系控制工程专业大数据方向考研经验分享...
基本情况(以下内容仅代表个人观点) 我目前就读于西南某双非石油工程专业,2019考研报考清华大学自动化系大数据工程专业,一志愿复试被刷,侥幸调剂录取至微电子系.初试总分346分(政治-63 + 英语一 ...
- c语言实现bf算法的定位函数,数据结构c语言版严蔚敏清华大学出版社第四章串.ppt...
数据结构c语言版严蔚敏清华大学出版社第四章串 模式匹配(定位) 设有主串S和子串T(将S称为目标串,将T称为模式串),在主串S中,从位置start开始查找,如若在主串S中找到一个与子串T相等的子串,则 ...
- 构建线性表的c语言代码,数据结构严蔚敏C语言版—线性表顺序存储结构(顺序表)C语言实现相关代码...
1.运行环境 这里说明一下这里所有的C语言代码都是基于code::blocks 20.03编译运行的.当然一些其他集成开发环境应该也是可以的,个人不太喜欢功能太过强大的IDE,因为那同样意味着相关设置 ...
- 数据结构 严蔚敏 第二章 线性表
数据结构 严蔚敏 第二章 线性表 线性表:由n个(n>=0)数据特征相同的元素构成的有限序列. 线性表的类型定义表示和实现 顺序表 存储单元地址连续 随机存取 若每个元素占用 m 个存储单元,以 ...
- 数据结构严蔚敏C语言版—线性表顺序存储结构(顺序表)C语言实现相关代码
数据结构严蔚敏C语言版-线性表顺序存储结构(顺序表)C语言实现相关代码 1.运行环境 2.准备工作 1)项目构建 1>新建一个SeqList项目 2>新建两个文件Sources和Heade ...
- 数据结构----严蔚敏
最近一直想找一本纯数据结构的书来学习,找来找去都没有找到一本合适的书籍,相比之下国内的书籍之中,严蔚敏和吴伟民的还算是经典版了,很多国内其他数据结构教材都参考这本书的.但缺点是很多都是伪代码,对编程初 ...
- 有关数据结构基础知识(数据结构 严蔚敏版)
1. 数据结构是一门研究非数值计算程序设计中的操作对象 以及这些对象之间的关系和操作的学科 2. 研究包括逻辑结构和存储结构 1) 逻辑结构(从具体问题抽象出来的数学模型)分为 集合结构 线性结构 树 ...
- 数据结构----严蔚敏 (链表)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.链表是什么? 二.使用步骤 总结 前言 数据结构是软件技术.网络技术等计算机类专业的一门重要的专业基础课程,其理论 ...
- 字符串静态顺序结构C/C++实现(数据结构严蔚敏版)
1.头文件String.h #include<stdio.h> #include<stdlib.h> #include<string.h> #include< ...
最新文章
- HPAIC人类蛋白质图谱分类挑战赛金牌经验分享
- 「预警」尽快升级FastJson版本,避免恶意请求导致OOM!
- c语言顺序表有效元素长度,C语言版数据结构顺序表的问题
- zipkin 原理和使用
- centOS配置国内镜像
- dYdX 2020年度回顾:累计交易量增长40倍
- python3 二进制文件比较_《Python 3程序开发指南(第2版•修订版)》——7.4 随机存取二进制文件...
- 如何用c#来制作一个activeX控件或类似的东西
- 使用函数 imnoise 对图像添加噪声
- 服务器虚拟化分步实施,服务器虚拟化解决实施方案.doc
- 不知道如何压缩PDF?教你3个压缩PDF文件方法
- 纯平显示器_绿色计算:切换到液晶纯平显示器
- DWcs4右下角没有html文件,dreamweaver cs4 (dwcs4)安装图文教程
- C语言学习日记(2)——写个Hello,World测试一下
- placement new 讲解
- 论举办黑客马拉松能为企业带来什么好处| 黑客松| 极客马拉松
- 计算机网络部分复习题
- 机器学习入门之PCA与ICA
- robot_state_publisher不能正常启动的解决之法
- 从“圈地运动”到“技术开放”,互联互通迈入深水区
热门文章
- e-HR推动知识型企业人力资源管理提升
- 使用Perl5获取有道词典释义
- python编程与几何图形pdf_《程序员数学:使用 Python 进行 3D 图形,机器学习和仿真》PDF 免费下载...
- Linux下使用锐捷客户端连接网络,以及遇到的问题
- comps电磁场模拟软件_opera电磁仿真软件
- 5G+AIoT“零碳”解决方案 | 模组助力“4S” 融合的新一代智能汽车驶入快车道
- 集装箱校验码校验规则
- VASP、Lammps快速上手神器——MedeA软件
- Java中基本数据类型的转换
- 精益创业实战 - 第3章 制作自己的精益画布