




已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章线性表 2 1线性表的类型定义2 2线性表的顺序存储2 3线性表的链式存储2 4一元多项式的表示及相加 本章主要重点和难点 重点 1 线性表的类型定义2 线性表的表示和实现3 线性表的应用 难点 1 线性表的链式存储2 线性表的实现 线性结构是一个数据元素的有序 次序 集合 它有四个基本特征 1 集合中必存在唯一的一个 第一元素 2 集合中必存在唯一的一个 最后元素 3 除第一元素之外 其它数据元素均有唯一的 前驱 4 除最后元素之外 其它数据元素均有唯一的 后继 线性表的结构特点 2 1线性表的类型定义 2 1 1线性表的逻辑结构 表头 表尾 序偶 线性表 LinearList 是由n n 0 个类型相同的数据元素a1 a2 an组成的有限序列 记作 a1 a2 ai 1 ai ai 1 an n为线性表的表长 对n 0 除第一个元素无直接前驱 最后一个元素无直接后继外 其余的每个数据元素只有一个直接前驱和一个直接后继 n 0时 线性表为空表 线性表的定义 例如 一个数 一个符号 字母表 学生登记表等都为线性表 数据元素为原子型 数据元素为结构体型 线性表的特点 同一性 线性表由同类数据元素组成 每一个ai必须属于同一数据对象 有穷性 线性表由有限个数据元素组成 表长度就是表中数据元素的个数 有序性 线性表中表中相邻数据元素之间存在着序偶关系 2 1 2线性表的抽象数据类型定义 ADTLinearList 数据元素 D ai ai D0 i 1 2 n n 0 D0为某一数据对象 关系 ai ai 1 D0 i 1 2 n 1 基本操作 1 InitList L 操作前提 L为未初始化线性表 操作结果 将L初始化为空表 2 DestroyList L 操作前提 线性表L已存在 操作结果 将L销毁 3 ClearList L 操作前提 线性表L已存在 操作结果 将表L置为空表 4 EmptyList L 操作前提 线性表L已存在 操作结果 如果L为空表则返回真 否则返回假 5 ListLength L 操作前提 线性表L已存在 操作结果 如果L为空表则返回0 否则返回表中的元素个数 6 Locate L e 操作前提 表L已存在 e为合法元素值 操作结果 如果L中存在元素e 则将 当前指针 指向元素e所在位置并返回真 否则返回假 7 GetData L i 操作前提 表L存在 且i值合法 即1 i ListLength L 操作结果 返回线性表L中第i个元素的值 8 InsList L i e 操作前提 表L已存在 e为合法元素值且1 i ListLength L 1 操作结果 在L中第i个位置插入新的数据元素e L的长度加1 9 DelList L i e 操作前提 表L已存在且非空 1 i ListLength L 操作结果 删除L的第i个数据元素 并用e返回其值 L的长度减1 ADTLinearList 2 2线性表的顺序存储 2 2 1线性表的顺序存储结构 线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素 特点 线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中 即通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系 采用顺序存储结构的线性表通常称为顺序表 假设线性表中有n个元素 每个元素占k个单元 第一个元素的地址为loc a1 则可以通过如下公式计算出第i个元素的地址loc ai loc ai loc a1 i 1 k 其中loc a1 称为基地址 例如 一个线性表的第一个元素的存储地址为100 每个元素的长度为2 则第5个元素的存储地址是多少 分析 已知 loc a1 100 k 2 求loc a5 根据公式loc ai loc a1 i 1 kloc a5 loc a1 5 1 2 100 4 2 108 图2 2顺序表存储示意图 线性表的动态分配存储结构 defineLIST INIT SIZE100 存储空间初始分配量 defineLISTINCREMENT10 空间分配增量 typedefstruct ElemType elem 存储空间基址 intlength 当前长度 intlistsize 当前分配的存储容量 SeqList SeqList ElemType 线性表的静态分配存储结构 defineMAXSIZE 线性表可能达到的最大长度typedefstruct ElemTypeelem MAXSIZE 存储空间 intlength 记录线性表的长度 SeqList 数组中的下标从0开始 elem 说明 1 结点类型定义中ElemType数据类型是抽象化的一般形式 用户可以根据自己实际需要来具体定义顺序元素的数据类型 2 从数组的下标为0的第一个单元开始存放第一个元素 需要注意数组的下标与元素的对应关系 即表中第i个数据元素是L elem i 1 利用顺序表定义变量的数据类型1 通过变量定义语句 SeqListL 将L定义为SeqList类型 访问顺序表中序号为i的元素ai L elem i 1 顺序表的表长 L length2 通过指针变量定义语句 SeqList L 将L定义为指向SeqList类型的指针变量 访问顺序表中序号为i的元素 L elem i 1 得到顺序表的表长 L length 2 2 2线性表顺序存储结构上的基本运算 1 初始化顺序表statusInitList sq seqList 2 线性表的插入线性表的插入运算是指在表的第i 1 i n 1 个位置 插入一个新元素e 使长度为n的线性表 e1 ei 1 ei en 变成长度为n 1的线性表 e1 ei 1 e ei en 用顺序表作为线性表的存储结构时 由于结点的物理顺序必须和结点的逻辑顺序保持一致 因此我们必须将原表中位置n n 1 i上的结点 依次后移到位置n 1 n i 1上 空出第i个位置 然后在该位置上插入新结点e 当i n 1时 是指在线性表的末尾插入结点 所以无需移动结点 直接将e插入表的末尾即可 例如 已知线性表 4 9 15 28 30 30 42 51 62 需在第4个元素之前插入一个元素 21 则需要将第9个位置到第4个位置的元素依次后移一个位置 然后将 21 插入到第4个位置 如图2 3所示 请注意区分元素的序号和数组的下标 图2 3顺序表中插入元素 1 算法设计 顺序表上溢处理 上溢发生的条件是 L length L listsize 此时先申请一个有一定增量的空间 修改L listsize的值 2 算法描述 StatusListInsert sq SqList 3 算法动态演示 4 算法时间复杂度的分析 1 当在表尾 即i L length 2 插入元素时 此时不需要移动元素 可直接在表尾插入e 2 当在表头 即i 1 插入元素时 将表中已存在的n个元素依次后移一个位置才能将e插入 3 一般情况下 在第i 1 i n 个元素前插入一个元素时 需将第n至第i 共n i 1 个元素向后移动一个位置 4 语句 p 1 p的执行次数和插入位置有关 算法的时间复杂度为O f n n 3 线性表的删除 1 算法分析线性表的删除运算是指将表的第i 1 i n 个元素删去 使长度为n的线性表 e1 ei 1 ei ei 1 en 变成长度为n 1的线性表 e1 ei 1 ei 1 en 例如 线性表 4 9 15 21 28 30 30 42 51 62 删除第5个元素 则需将第6个元素到第10个元素依次向前移动一个位置 删除元素后 线性表的表长减少1 2 算法描述StatusListDelete sq SeqList 3 删除算法动态演示 4 算法时间复杂度分析 1 若删除的是表尾元素 则此时不需要移动元素 仅将表长度减1即可 2 若删除的是表头元素则表中除被删元素外 其余的元素将依次向前移动一个位置 3 一般情况下 删除第i个元素时需要将第i 1至第n个元素共n i个元素依次向前移动一个位置 4 算法执行的时间复杂度为 f n n 1 2 O f n n 3 线性表的查找操作1 算法分析线性表有两种基本的查找运算 1 按序号查找GetData L i 要求查找线性表L中第i个数据元素 其结果是L elem i 1 2 按内容查找Locate L e 要求查找线性表L中与给定值e相等的数据元素 其结果是 若在表L中找到与e相等的元素 则返回该元素在表中的序号 若找不到 则返回一个 空序号 查找运算可采用顺序查找法实现 即从第一个元素开始 依次将表中元素与e相比较 若相等 则查找成功 返回该元素在表中的序号 若e与表中的所有元素都不相等 则查找失败 返回 1 2 算法描述intLocateElem Sq SeqListL ElemTypee inti 0 while i L length return 1 elsereturni 3 算法动态演示 1 有序顺序表的合并有两个顺序表LA和LB 其元素均为非递减有序排列 编写一个算法 将它们合并成一个顺序表LC 要求LC也是非递减有序排列 例如 LA 2 2 3 LB 1 3 3 4 则LC 1 2 2 3 3 3 4 2 2 3顺序表应用举例 算法思想 设表LC是一个空表 为使LC也是非递减有序排列 可设两个指
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 物联网数据封装与边缘计算的资源受限优化-洞察及研究
- 2025山东日照市土地发展集团有限公司招聘工作人员7人考试模拟试题及答案解析
- 2025四川蜀道智慧交通集团有限公司校园招聘7人考试模拟试题及答案解析
- 2025甘肃嘉峪关市卫生健康系统基层医疗机构聘用制执业医师招聘20人笔试参考题库附答案解析
- 2025玉溪市通海县教育体育系统城区学校系统内公开定向选调教师(48人)考试备考试题及答案解析
- 2025河北沧州市新华区招聘事业单位人员36人考试模拟试题及答案解析
- 2025山东临沂市兰山区社区工作者招聘81人笔试模拟试题及答案解析
- 2025榆林高新区第七小学招聘笔试备考题库及答案解析
- 2025浙江丽水遂昌县神剑保安服务有限公司招聘劳务派遣人员1人笔试模拟试题及答案解析
- 2025工银安盛人寿保险有限公司天津分公司招聘7人笔试参考题库附答案解析
- 2025-2026学年人教版(2024)初中数学七年级上册教学计划及进度表
- 高速天桥拆除方案(3篇)
- 第1课 鸦片战争 课件 历史统编版2024八年级上册
- 2025年中国冷链物流行业投资前景分析、未来发展趋势研究报告(智研咨询发布)
- 2025合作合同范本下载
- 手外伤急救诊疗流程标准化
- 2025年安徽省中考历史试卷真题(含答案)
- GB/T 19867.5-2008电阻焊焊接工艺规程
- GB/T 1706-2006二氧化钛颜料
- 2023年安徽省国有金融资本投资管理有限公司招聘笔试题库及答案解析
- 新外研版英语七年级上册单词默写表
评论
0/150
提交评论