- 1、本文档共112页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
线性表-数据结构
第二章 线性表 课前导学 2.1 线性表的类型定义 2.2 线性表的顺序表示与实现 2.3线性表的链式表示与实现 2.4 一元多项式的表示及相加 学习目标 1.了解线性表的逻辑结构特性是数据元素之间存在着线性关系。 2. 熟练掌握这两类存储结构的描述方法以及线性表的基本操作在这两种存储结构上的实现。 3. 能够从时间和空间复杂度的角度综合比较线性表两种存储结构的不同特点及其适用场合。 4. 结合线性表类型的定义增强对抽象数据类型的理解。 重点和难点 链表是本章的重点和难点。扎实的指针操作和内存动态分配的编程技术是学好本章的基本要求,分清链表中指针 p 和结点 *p 之间的对应关系,区分链表中的头结点、头指针和首元结点的不同所指以及循环链表、双向链表的特点等。 线性结构的特点 在数据元素的非空有限集中 存在唯一一个被称做“第一个”的数据元素; 存在唯一一个被称做“最后一个”的数据元素; 除第一个数据元素之外,每个元素都只有一个前驱; 除最后一个数据元素之外,每个元素都只有一个后继。 线性表的定义 一个线性表是n个数据元素的有限序列。 除了第一个元素没有直接前驱和最后一个元素没有直接后继之外,其余的每个数据元素只有一个直接前驱和一个直接后继。 线性表的特征 有穷性:由有限个元素组成,元素个数n—表长度,n=0空表。设线性表为 (a1,a2, . . . ,ai,. . . ,an), 称 i 为 ai 在线性表中的位序。 有序性:线性表元素之间存在序偶关系,1in时 ai的直接前驱是ai-1,a1无直接前驱 ai的直接后继是ai+1,an无直接后继 同一性:线性表属于同类数据元素组成,每一个对象都属于同一数据对象 抽象数据类型线性表的定义如下: ADT? List { 数据对象:D={ ai | ai ∈ElemSet, i=1,2,...,n, n≥0 } 数据关系:R1={ ai-1 ,ai |ai-1 ,ai∈D, i=2,...,n } 基本操作: (1)InitList(L) 操作结果:将L初始化为空表。 (2)DestroyList(L) 操作前提:线性表L已存在。 操作结果:将L销毁。 (3)ClearList(L) 操作前提:线性表L已存在 。 操作结果:将表L置为空表。 (4)EmptyList(L) 操作前提:线性表L已存在。 操作结果:如果L为空表则返回真,否则返回假。 (5)ListLength(L) 操作前提:线性表L已存在。 操作结果:如果L为空表则返回0,否则返回表中的元素个数。 (6)GetItem(L,i,e) 操作前提: 表L已存在,1=i=listlength(L)。 操作结果: 用e返回L中第i个元素的值。 (7)LocateElem(L,e) 操作前提: 表L已存在,e为合法元素值。 操作结果: 如果L中存在元素e,则将“当前指针”指向元素e所在位置并返回真,否则返回假。 (8)ListInsert(L,i,e) 操作前提:表L已存在,e为合法元素值且1≤i≤ListLength(L)+1。 操作结果:在L中第i个位置之前插入新的数据元素e,L的长度加1。 (9)ListDelete(L,i,e) 操作前提:表L已存在且非空 ,1≤i≤ListLength(L)。 操作结果:删除L的第i个数据元素,并用e返回其值,L的长度减1。 }ADT? List 算法举例: 例2-1 假设有两个集合A和B分别用两个线性表LA和LB表示(即:线性表中的数据元素即为集合中的成员),现要求一个新的集合A=A∪B。要求对线性表作如下操作:扩大线性表LA,将存在于线性表LB中而不存在于线性表LA中的数据元素插入到线性表LA中去。(注:∪ ——并集,属于A或者属于B) 从线性表LB中依次取得每个数据元素; GetElem(LB, i)→e 依值在线性表LA中进行查访; LocateElem(LA, e, equal( )) 若不存在,则插入之。 ListInsert(LA, n+1, e) 算法的时间复杂度: O(ListLength(LA) ×ListLength(LB)) 结构体类型的使用 结构体的定义方式: struct 结构体名 { 成员列表 } 变量名称; 例如: typedef struct student { int num; //学号 char
您可能关注的文档
最近下载
- 2025款比亚迪宋PLUS EV豪华尊贵旗舰型_用户手册驾驶指南车主车辆说明书电子版.pdf VIP
- 第1课《初三,我来了》课件北师大版心理健康教育九年级全一册.ppt
- 2023全域用户经营白皮书:STAR模型,从用户运营到生意增长.doc VIP
- NBT 35042-2014 水力发电厂通信设计规范.pdf
- 《小学英语单元整体作业设计的实践研究》开题报告.docx VIP
- “三个聚焦”内容个人自查报告.docx VIP
- 2024年充电宝市场现状分析:充电宝全球市场销售额达到224亿元.docx
- 各种烟气焓温、密度、比热计算表.xls VIP
- 考试妇科试题.docx VIP
- 德国科技创新与产业趋势.pptx VIP
文档评论(0)