cha2 线性表.ppt

  1. 1、本文档共77页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
cha2 线性表

第二章 线性表 简介:最简单、最常用的数据结构, 线性表的顺序表示和实现 线性表的链式表示和实现 线性表的应用实例--- 一元多项式的表示和运算 重点: 线性表的基本概念和术语 线性表的顺序表示和链式表示方法及其上的基本操作 相关算法的时间复杂度分析 难点:线性表的链式表示和基本操作 线性结构的特点 存在惟一的一个被称作第一个的数据元素; 存在惟一的一个被称作最后一个的数据元素; 相邻数据元素之间存在序偶关系,若将线性表记为(a1,a2,…,ai-1,ai,ai+1,…,an) 表中ai-1领先于ai, 称 ai-1 是ai的直接前驱元素; ai+1 是ai的直接后继元素。 除第一个之外,线性表中的每个数据元素均只有一个直接前驱; 除最后一个之外,线性表中每个数据元素均只有一个直接后继; 2.1 线性表类型定义 线性表(Linear List):n个数据元素的有限序列。 如(3,5,56,67,88),(a,b,c,d,e,f)都是线性表,更复杂的线性表中,一个数据元素(记录)可以由若干个数据项组成,含有大量记录的线性表称为文件。 如:学生健康情况表: 总之: 线性表的数据元素可由若干数据项组成。 同一线性表中的元素必定具有相同特性 线性表术语 线性表的长度:线性表中元素的个数(n); 空表:n=0时,称为空表; 位序:在非空的线性表中,每个元素都有一个确定的位置,如(a1, a2, …, ai , …, an)中,i 为数据元素ai在线性表中的位序。 线性表上的操作:构造、销毁、置空、判断是否为空表、求线性表的长度、取第i个数据元素、求某个值在表中的位序、求前驱/后继、插入/删除一个数据元素、遍历等 线性表的操作:例2-1 需求 :线性表LA和LB分别表示集合A和B,求A=A∪B。 解决方案:把存在于LB且不存在于LA的元素插入LA。 算法描述: void union(List La,List Lb) { La_len=ListLength(La) ; Lb_len=ListLength(Lb); for(i=1;i=lb_len;i++) {  //①从Lb中依次取得每一个元素 //②与La的每一个元素比较 //③如不存在,则插入之 } }//union 无序线性表合并的算法 线性表应用:例2-2 需求:线性表LA和LB的数据元素按值非递减有序,归并LA和LB为LC,LC元素仍按值非递减有序排列。 解决方案:设指针i和j分别指向LA和LB的元素,比较i和j所指当前元素ai和bj,选min(ai,bj)插入为LC的元素 算法框架: void MergeList(List La,List Lb,List Lc) { InitList(Lc); La_len=ListLength(La) ; Lb_len=ListLength(Lb); while((i=la_len)(j=lb_len)) { //①分别获取LA和LB的元素比较,将值小的插入LC} //②将LA或LB的剩余数据元素,插入LC中。 }//MergeList 有序线性表合并的算法 2.2 线性表的顺序表示和实现 线性表的顺序表示:用一组地址连续的存储单元依次存储线性表的数据元素。 特点:逻辑上相邻的数据元素在物理位置上相邻。 线性表顺序存储结构是一种随机存取的存储结构 设线性表的每个元素占l个存储单元, LOC(a1)为线性表的起始地址, 线性表顺序表示的实现 线性表的顺序实现:动态分配的一维数组 线性表的动态分配顺序存储结构 #define LIST_INIT_SIZE 100 //线性表存储空间的初始分配量 #define LISTINCREMENT 10//线性表存储空间的分配增量 typedef struct { Elemtype *elem;//存储空间的基地址。 int length;//当前长度 int listsize; //当前分配的存储容量 }Sqlist; 基本操作的实现举例:InitList_Sq(Sqlist L) 顺序表的基本操作—插入 顺序表插入操作的时间复杂度分析 顺序表的基本操作—删除 顺序表删除操作的时间复杂度分析 顺序表的归并 顺序表小结 针对一个具体应用如何写程序 认清具体问题的逻辑结构 选定其存储结构 具体实现 声明你自定义的数据类型 初

文档评论(0)

ranfand + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档