ch02Linearlists2012答案课程.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第二章 线性表 本章内容 2.1 线性表的类型定义 2.2 线性表的顺序表示和实现 2.3 线性表的链式表示和实现 2.3.1 线性链表 2.3.2 循环链表 2.3.3 双向链表 2.4 一元多项式的表示及相加 2.1 线性表的类型定义 定义:一个线性表是有n个数据元素的有限序列: (a1,a2,…,ai,…,an)。 线性表中元素之间的关系是线性关系: 存在惟一的第一个元素; 存在惟一的最后一个元素; 除第一个元素之外,每个元素均只有一个直接前驱; 除最后一个元素之外,每个元素均只有一个直接后继。 线性表中的元素类型: 原子类型:如整数、字符等。 结构类型:如表示一个学生信息的数据元素,包含学号、姓名、性别等数据项。 一个线性表中元素的个数n(n≥0)定义为线性表的长度,n=0时称为空表。非空线性表中的每个元素都有一个确定的位序。 2.1 线性表的类型定义 线性表的抽象数据类型定义: ADT List { 数据对象:D={ ai | ai ?ElemSet, i=1,2,…n, n?0 } 数据关系: R={ai-1,ai | ai-1,ai ?D, i=1,2,…n} 基本运算: InitList(L); DestroyList(L); Length(L); GetElem(L,i,e); LocateElem(L,e,compare()); InsertElem(L,i,e); DeleteElem(L,i,e); …… } ADT List 2.1 线性表的类型定义 抽象运算(算法2.1) 例2-1 利用两个线性表LA和LB分别表示集合A和B,求一个新的集合A=A∪B。 算法思路:集合中的元素间是松散的关系,只需将在线性表LB中而不在LA中的数据元素追加到LA的尾部即可。 void union(List La,List Lb) { La_len = Length(La); Lb_len = Length(Lb); for(i = 1;i = Lb_len; i++) { GetElem(Lb, i, e); if (!LocatElem(La, e, equal)) ListInsert (La, ++La_len, e); //基本操作 } }//union 时间复杂度:O(La_len* Lb_len) 阅读算法2.2 2.2 线性表的顺序表示和实现 顺序表---线性表的顺序存储 内涵:   线性表的顺序存储指用一组地址连续的存储单元依次存储线性表的数据元素。这称为顺序表。 2.2 线性表的顺序表示和实现 顺序表存储的C语言实现   由于C语言中的一维数组也是采用顺序存储表示,故可以用数组类型来描述顺序表。下面我们用结构类型来定义顺序表类型。 //----------动态分配------------ #define LIST_INIT_SIZE 100 //空间初始分配量 #define LISTINCREMENT 10 //空间分配增量 typedef struct { ElemType *elem; //存储空间基址 int length; //当前长度 int listsize; //当前分配的存储容量 } SqList; 2.2 线性表的顺序表示和实现 创建一个空的顺序表(算法2.3) Status InitList_sq(SqList L) { L.elem = (ElemType *)malloc(INIT_SIZE*sizeof(ElemType)); if (!L.elem) exit(OVERFLOW); L.length = 0; L.listsize = INIT_SIZE; return OK; }// InitList_sq 2.2 线性表的顺序表示和实现 线性表上的基本运算 插入运算 含义:   将元素e插入到线性表:(a1, a2, …, ai-1, ai, …, an)中,构成新的线性表(a1, a2, …, ai-1, e, ai, …, an),满足ai-1 ≤e ≤ai,(其中≤为比较关系),即不破坏原线性关系。 表的长度为n+1 将元素e插入到元素ai-1之后,ai-1的直接后继和ai 的直接前驱就改变了,需要在顺序表的存储结构上反映出来。 2.2 线性表的顺序表示和实现 顺序表上插入运算的实现: 2.2 线性表的顺序表示和实现 以7个元素的顺序表为例进行说明,将元素e插入a5之前。 2.2 线性表的顺序

文档评论(0)

ipad0d + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档