- 1、本文档共71页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构第2单元线性表
第二章 线性表 2.1 线性表的定义 2.1.1 线性表的逻辑结构 线性表是有限元素(e0,e1, ...,ei,...,en-1)的有序序列的集合。其中n是有穷自然数,表中的每个元素ei具有相同的特性,表中元素占用空间大小相同,记为:size,n是表的长度。当n=0时,表为空;当n0时,e0是第一个元素,en-1 是最后一个元素。 “有序”是指线性元素间的相互位置关系。ei-1是 ei的直接前驱元素,而元素ei一定在元素ei+1之前,称ei+1是ei的直接后继元素。而且,每个元素只有一个直接前驱元素(除第一个元素),也仅有一个直接后继元素(除最后一个元素)。 2.1.2 线性表的抽象数据类型 2.2 线性表的顺序存储及操作 2.2.1 线性表顺序存储 1. 线性表顺序存储概念 线性表顺序存储方式,是将线性表中的数据元素连续顺序地存放于存储器中相邻的单元 。 线性表占用的第一个存储单元的地址,就是线性表的首地址,也是线性表中第一个数据元素(e0)的首地址。 “首地址”有两种理解: 一是相对于线性表本身,是线性表的始点,即“0号地址”,这就是通常所说的“相对地址”; 二是相对于计算机的物理存储空间,线性表的始点相对于计算机物理存储空间则是一个“物理地址”,一般记为:location(e0),通常称为“绝对地址”或“基地址”。 2. 线性表顺序存储结构定义 线性表结构: typedef struct { EType *element; int length; int MaxSize; } LinearList; LinearList L,L1,L2; 学生信息的情况数据元素结构类型(EType)及线性表 typedef struct { unsigned number[10]; char name[8]; char sex[2]; int age; char place[20]; }student; typedef struct { student *element; int length; int MaxSize; } LinearList; LinearList stud1, stud2; 2.2.2 线性表顺序存储结构下的操作 1. 构造空线性表L 空线性表是指表中没有一个数据元素,但数据元素的空间和线性表结构存在 构造空线性表L算法(Creat) viod Creat(LinearList L , int MaxListSize) {// 构造一个最大容量为MaxListSize 的线性表L L.MaxSize = MaxListSize; L.element = new EType [L.MaxSize]; L.length = 0; } 算法的时间复杂性是O(1)。 2. 输出线性表L中的所有数据元素 输出线性表L中所有数据元素(Output) viod Output(LinearList L) {// 逐个地输出线性表L中的数据元素 for (int i = 0; i L.length; i++) cout L.element[i] ; } 算法的时间复杂性是O(length )。 3. 线性表L中取第k个元素 线性表L中将第k个元素取至x中算法(GetElem) bool GetElem(LinearList L, int k, EType x) { //L中第k个元素取至x中,如不存在返回false,找到返回true,x取回 if (k 1 || k L.length) return false x = L.element[k - 1]; return true; } 算法的时间复杂性是O(1 )。 4. 线性表L中查找元素x 线性表L中查找元素x(Search) int Search(LinearList L, const EType x) {// 查找x,如果找到,返回x所在的位置下标;如果未找到返回-1 for (int i = 0; i L.length; i++) if (L.element[i] == x) return i; return -1; } 算法的时间复杂性是O(length)。 一般是已知某个查找关键字(Searchkey),通过查找关键字与线性表中的数据元素的关键字的比较完成查找过程的,因此,算法查找的比较条件也可以表达为: if (L.element[i].key == Searchkey) 5. 线性表L
您可能关注的文档
- 影射与函数.ppt
- 形形色色的分子与价层电子对互斥理论.ppt
- 弹性力学问题有限单元法的一般原理和表达格式.ppt
- 循环结构(一).ppt
- 循环结构–II.ppt
- 张超多简洁、漂亮、清爽、实用的图表.ppt
- 微分方程的建立与求解.ppt
- 张量运算.ppt
- 循环结构II.ppt
- 循环系统(临床).ppt
- DB44T 2373.2-2022 科普展览设计规范 第2部分:形式设计.pdf
- DB44T 2252-2020 森林火灾应急预案编制导则.pdf
- DB44T 2278-2021 重金属污染稻田土壤安全利用技术指南.pdf
- DB44T 2360-2022 城际铁路设计细则.pdf
- DB44T 2250-2020 飞机施药防治松材线虫病技术规程.pdf
- DB44T 2340.1-2021 诸氏鲻虾虎鱼 毒理学评价 第1部分:急性毒性.pdf
- DB44T 2359-2022 垛基果林湿地恢复技术规程.pdf
- DBT29-255-2025 绿色建筑工程验收标准.pdf
- DB44T 2218.7-2019 中医(中西医结合)临床实践指南制修订通则 改编与更新.pdf
- DB44T 2351-2022 12345政府热线知识库标识编码规范.pdf
文档评论(0)