- 1、本文档共29页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1、线性表 元素及元素之间的关系为线性 线性表: 顺序存储的线性表 1.1、用数组实现线性表(顺序存储、顺序表) 线性表元素:a1、a2、a3、a4.... 数组元素: a[0]、a[1]、a[2]、a[3] 顺序存储的线性表 1.1.1、定义 元素类型 线性表名称[ 线性表长度 ] 例 顺序存储的线性表 进一步定义 线性表的操作 1.1.2、(顺序)线性表的操作 遍历 插入 删除 …… 遍历运算 插入运算 插入运算 问题描述 以a1开始的线性表中 在第i个元素前插入一个新元素new_node。 插入运算 从ai开始向后移动 从an开始向前每个元素向后移一格 插入运算 算法 输入: table: 指向线性表的指针 new_nede:需要插入的元素 location:插入的位置,在其之后插入 输出 table:线性表指针 插入运算 算法 插入运算 出错处理 删除运算 删除运算 问题描述:删除第i个元素 算法实现分析 删除运算 算法实现分析 从an开始向前逐个元素向前移动 从ai+1开始向后逐个元素向前移动 删除运算 算法 输入 table:线性表指针 location:需要删除的节点位置 输出 table:线性表指针 删除运算 算法 删除运算 出错处理 编写算法的一般步骤 编写算法的一般步骤: 1、分析问题描述 输入,输出及模块功能等 2、分析算法实现的总体框架,关键问题的突破方法 3、核心算法的实现 4、算法补充完善, 如: 增加算法有效性的保护措施——越界判断等 顺序存储的线性表 1.1.3 数组顺序存储结构的特点 元素随机获取特性。 存取时间短 存取时间与位置无关 元素更动的搬移性 平均N/2次的搬移 顺序存储的线性表 顺序存储的线性表 例 例:合并两个线性递增表,合并后的表仍然是递增的。 功能:表的合并 输入:两个线性表 输出:合并后的表,保持递增性。 算法分析 例:合并两个线性递增表,合并后的表仍然是递增的。 算法实现分析 利用图形帮助分析 算法分析 例:合并两个线性递增表,合并后的表仍然是递增的。 算法实现分析 将两个表的元素进行逐个比较 将较小的一项放在新的合并表内 较大的一项继续比较 最后当一个表的全部节点都放在合并表里后,将另一个表的剩余节点放进合并表。 顺序存储的线性表 例 补充和完善 对长度越界的判断 其它更高效的算法实现? 思考:如果输入的两个线性表不是递增的,如何设计算法? 段景山 * * 段景山 软件技术基础 制作 主讲 段景山 段景山 线性结构 第二章 线性数据结构 线性表 队列 栈 串 二维数组 (1)有且仅有一个开始节点(该节点只有一个后继节点,没有前趋节点) (2)有且仅有一个结束节点(该节点只有一个前趋节点,没有后继节点) (3)其余节点有且仅有一个前趋和一个后继 k1 k2 k3 k4 k1 k2 k3 线性关系: a1 a2 a3 a4 数组下标大小 int data[ max_length ]; 以 a0开始的线性表-- a0 、a1、a2、a3…… a i data[ i ] 以a1开始的线性表-- a1、a2、a3、a4…… data[ i – 1 ] a i typedef struct list_type{ elemtype data[ MAXNUM ]; int length; }list_type; list_type table; ai table.data[ i ] 元素数据类型 线性表长度 线性表元素个数 table.length for( i = 0; i table.length; i++ ){ } typedef struct list_type{ elemtype data[ MAXNUM ]; int length; }list_type; list_type table; table.data[ i ] 以 a0 开始的 a ? 以 a1 开始的 a ? i+1 i 都是线性表的第 ? 个元素 i+1 a1 a2 ai-1 ai an …… a1 a2 ai-1 new node ai+1 ai …… an ai+1 a1 a2 ai-1 ai ai+1 ...... an ai ai ai ai a1 a2 ai-1 ai ai+1 … an an … ai+1 ai for( j = i; j table.length; j++){ table.data[ j+1 ] = table.data[ j ]; } for( j = table.length; j i; j--){ table.data[ j+1 ] = table.data[ j ]; }
您可能关注的文档
- 成都理工大学信息科学与技术学院计算机网络与多媒体技术课件第4章 局域网.ppt
- 成都理工大学信息科学与技术学院计算机网络与多媒体技术课件第5章 网络操作系统.ppt
- 成都理工大学信息科学与技术学院计算机网络与多媒体技术课件第6章 Internet应用.ppt
- 成都理工大学信息科学与技术学院计算机网络与多媒体技术课件第7章 计算机网络安全.ppt
- 成都理工大学信息科学与技术学院计算机网络与多媒体技术课件第10章 多媒体数据压缩技术.ppt
- 成都理工大学信息科学与技术学院计算机网络与多媒体技术课件第11章 数字音频处理技术.ppt
- 成都理工大学信息科学与技术学院计算机网络与多媒体技术课件第12章 图形与图像处理技术.ppt
- 成都理工大学信息科学与技术学院计算机网络与多媒体技术课件第13章 计算机动画处理技术.ppt
- 成都理工大学信息科学与技术学院计算机网络与多媒体技术课件第14章 多媒体视频技术.ppt
- 成都理工大学信息科学与技术学院数据库程序设计课件第2章 Visual FoxPro 6.0基础知识.ppt
文档评论(0)