- 1、本文档共21页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
线性表知识小结 线性结构的基本特点 是由n(n=0)个结点组成的有穷序列. (直接)前驱 (直接)后继 一个结点代表一个数据元素,通常要求同一个线性结构中的所有结点所代表的数据元素具有相同的属性(比如:数据项个数相同;对应数据项的类型相同) 所含结点的个数称为线性表的长度(表长),表长为0的线性表称为空表. 线性表的顺序实现----顺序表 基本思想:按逻辑关系来决定排列顺序,实际就是一维数组,数组的下标可以看成是元素的相对地址。逻辑上相邻的元素的物理位置必紧邻。 存储特点: 优点:可随机存取(访问); 缺点:插入和删除操作时,需移动大量元素 需事先确定表的容量 容易产生“碎片” 长度为n的顺序表中,等概率情况下,插入一个元素的平均移动元素次数为n/2,删除一个元素的平均移动元素次数为(n-1)/2,其时间复杂度都为O(n)。 线性表的链式存储----单链表 基本思想:用一个指针表示结点间的逻辑关系。每个结点的存储单元都分为两部分:一部分存放结点的数据,另一部分存放指向结点后继结点的指针。 存储特点: 优点:对任何位置进行插入和删除操作只需修改指针;不需要预先分配空间; 缺点:顺序存取(访问)的结构(不能从当前结点出发访问到任一结点) 带头结点的单链表sq为空的条件: sq-next==NULL 不带头结点的单链表sq为空的条件 sq==NULL 在单链表中,删除某一指定结点时,需找到该结点的前驱结点。 在单链表中设置头结点的作用: 不管单链表是否为空表,头结点指针均不空,并使得对单链表的操作在各种情况下统一。 在单循环链表中通常设置尾指针(指向最后一个结点)比设置头指针好 从一个具有n 个结点的单链表中查找其值等于x的结点时,在查找成功情况下平均需比较 个结点 思考:对于一个有n个结点的单链表,在已知p所指结点后插入一个结点的时间复杂度是?在给定值为x的结点后插入一个结点的时间复杂度是? 已知sq是带头结点的非空单链表,且p指向的结点既不是第一个结点也不是最后一个结点,则写出下列语句序列: 删除*p的直接后继结点 删除*p的直接前驱结点 删除*p结点 删除第一个结点 删除最后一个结点 设计算法将一个带头结点的单链表A分解为两个具有相同结构的链表B、C。 其中B表的结点是A表中值小于零的点,而C表中的结点为A表中值大于零的结点(链表A的元素类型为整型,要求B、C表使用A表的结点, 即不再开辟新的结点空间) void split ( linklist lb , linklist lc , linklist la) { linklist p = la-next , r , s ; lb = ( linklist ) malloc ( sizeof ( lnode ) ); lc = ( linklist ) malloc ( sizeof ( lnode ) ); r = lb; s = lc; while ( p != NULL ) { if ( p-data 0 ) //将结点链入B表中 { r-next=p ; r=r-next ; } else if ( p-data 0 ) //将结点链入C表中 { s-next=p ; s=s-next ; } p = p -next; } r-next=NULL; s-next=NULL; free ( la ); } 在非递减有序的顺序表中插入元素x,使其仍保持有序。 分析: 从后向前查找插入位置 ,同时向后移动大于x的元素 status Orderlistinsert(sqlist L , ElemType e) { if (L.length = = MAXSIZE) return ERROR; for( i=L.length-1 ; i=0 L.elem[i]x ; i- - ) L.e
文档评论(0)