- 1、本文档共50页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
01/06/2002 数据结构讲义 第二章 线性表 ⒈教学内容: 2.1 线性表逻辑结构; 2.2 线性表的顺序存储及运算实现; 2.3 线性表的链式存储和实现。 ⒉教学目的: ⑴理解线性表的定义及其运算; ⑵理解顺序表和链表的定义、组织形式、结构特征和类型说明; ⑶掌握在这两种表上实现的插入、删除和按值查找的算法; ⑷了解循环链表、双(循环)链表的结构特点和在其上施加的插入、删除等操作。 2.1 线性表的逻辑结构 线性表的定义 线性表的基本操作 2.1.1 线性表的定义 线性表是一种线性结构。线性结构的特点是数据元素之间是一种线性关系,数据元素“一个接一个的排列”。在一个线性表中数据元素的类型是相同的,或者说线性表是由同一类型的数据元素构成的线性结构。 线性表是具有相同数据类型的n(n=0)个数据元素的有限序列,通常记为: (a1,a2,… ai-1,ai,ai+1,…an) 其中n为表长, n=0 时称为空表。 2.1.2 线性表的基本操作 ⑴线性表初始化:Init_List(L) 初始条件:表L不存在 操作结果:构造一个空的线性表 ⑵求线性表的长度:Length_List(L) 初始条件:表L存在 操作结果:返回线性表中的所含元素的个数 ⑶取表元:Get_List(L,i) 初始条件:表L存在且1=i=Length_List(L) 操作结果:返回线性表L中的第i个元素的值或地址 2.2 线性表的顺序存储及运算实现 线性表的顺序存储 顺序表上基本运算的实现 顺序表应用举例 2.2.1 线性表的顺序顺序存储 线性表的顺序存储是指在内存中用地址连续的一块存储空间顺序存放线性表的各元素,用这种存储形式存储的线性表称其为顺序表。 设 a1的存储地址为Loc(a1),每个数据元素占d个存储地址,则第i个数据元素的地址为: Loc(ai)=Loc(a1)+(i-1)*d 1≤I≤n 从结构性上考虑,通常将 data 和 last 封装成一个结构作为顺序表的类型: typedef struct { datatype data[MAXSIZE]; int last; } SeqList; 2.2.2 顺序表上基本运算的实现⒈ 顺序表的初始化 顺序表的初始化即构造一个空表,对表是一个加工型的运算,因此,将 L设为指针参数,首先动态分配存储空间,然后,将表中 last 指针置为-1,表示表中没有数据元素。算法如下: SeqList *init_SeqList( ) { SeqList *L; L=malloc(sizeof(SeqList)); L-last=-1; return L; } ⒉插入运算 线性表的插入是指在表的第i个位置上插入一个值为 x 的新元素,算法如下: int Insert_SeqList(SeqList *L,int i,datatype x) { int j; if (L-last == MAXSIZE-1) { printf("表满"); return(-1); } /*表空间已满,不能插入*/ if (i1 || iL-last+2) /*检查插入位置的正确性*/ { printf("位置错"); return(0); } for(j=L-last; j=i-1; j--) L-data[j+1]=L-data[j]; /* 结点移动 */ L-data[i-1]=x; /*新元素插入*/ L-last++; /*last仍指向最后元素*/ return (1); /*插入成功,返回*/ } 插入算法的时间性能分析 顺序表上的插入运算,时间主要消耗在了数据的移动上,在第i个位置上插入 x ,从 ai 到 an 都要向下移动一个位置,共需要移动 n-i+1个元素,而 i 的取值范围为 :1≤ i≤ n+1,即有 n+1个位置可以插入。设在第i个位置上作插入的概率为Pi,则平均移动数据元素的次数: 设
您可能关注的文档
- 暑期安全教育家长会资料.ppt
- 我们能做点什么?资料.ppt
- 探测原理第四章20160330资料.ppt
- 探究串联、并联电路电压的特点资料.ppt
- 曙光DBStor-C系列售前培训资料.ppt
- 探究宁国市重点文物保护单位资料.ppt
- 我生活的社区资料.ppt
- 探究酸和碱的反应资料.ppt
- 数电第六章资料.ppt
- 我是第一责任人(DEC)资料.ppt
- 中国国家标准 GB/T 18233.4-2024信息技术 用户建筑群通用布缆 第4部分:住宅.pdf
- GB/T 18233.4-2024信息技术 用户建筑群通用布缆 第4部分:住宅.pdf
- GB/T 18978.210-2024人-系统交互工效学 第210部分:以人为中心的交互系统设计.pdf
- 《GB/T 18978.210-2024人-系统交互工效学 第210部分:以人为中心的交互系统设计》.pdf
- 中国国家标准 GB/T 18978.210-2024人-系统交互工效学 第210部分:以人为中心的交互系统设计.pdf
- GB/T 16649.2-2024识别卡 集成电路卡 第2部分:带触点的卡 触点的尺寸和位置.pdf
- 《GB/T 16649.2-2024识别卡 集成电路卡 第2部分:带触点的卡 触点的尺寸和位置》.pdf
- 中国国家标准 GB/T 16649.2-2024识别卡 集成电路卡 第2部分:带触点的卡 触点的尺寸和位置.pdf
- GB/T 17889.4-2024梯子 第4部分:铰链梯.pdf
- 《GB/T 17889.4-2024梯子 第4部分:铰链梯》.pdf
最近下载
- 百日咳试题附有答案.docx VIP
- 2024年广东省深圳市光明区人大常委会办公室招聘一般类岗位专干12人历年【综合基础知识500题】高频考点模拟试题及参考答案解析.docx VIP
- 高中语文任务驱动型材料作文:枯燥与热闹审题指导(含解析).docx VIP
- 某镇卫生院污水设计方案.pdf VIP
- 2024年广东深圳市光明区人大常委会办公室招聘一般类岗位专干3人历年【综合基础知识500题】高频考点模拟试题及参考答案解析.docx VIP
- 中考数学经验交流会发言稿.pdf
- 2024年7月广东省深圳市光明区人大常委会办公室招聘10人历年【高频考点汇总500题】模拟卷及参考答案详解.docx VIP
- 《溜冰圆舞曲和雷鸣电闪波尔卡》精品课件2023.pptx
- 水利项目安全评价报告.docx
- 2024年7月广东省深圳市光明区人大常委会办公室招聘10人历年【综合基础知识500题】高频考点模拟试题及参考答案解析.docx VIP
文档评论(0)