网站大量收购闲置独家精品文档,联系QQ:2885784924

第2节 线性表2.ppt

  1. 1、本文档共44页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
顺序表示的特点: 实现逻辑上相邻—物理地址相邻 实现随机存取 顺序表示的实现:可用C语言的一维数组实现 由于线性表的长度是可变的,因此对顺序表的定义除了需要一个存储元素的一维数组空间以外,还需要两个数据成员: 一个指示顺序表中已有的元素个数; 另一个指示该顺序表允许存放的数据元素个数的最大值。 例1.试编写算法“比较”两个顺序表的大小。 何谓顺序表的大小?现作如下规定:   设A=(a1,…,am)和 B=(b1,…,bn)均为顺序表,又A‘和B’分别为 A 和 B中除去最大共同前缀后的子表。 (例如,A=(y,x,x,z,x,z),B=(y,x,x,z,y,x,x,z),则两者中最大的共同前缀为(y,x,x,z),在两表中除去最大共同前缀后的子表分别为A=(x,z)和 B=(y,x,x,z))。 若A=B=空表,则 A=B;若A=空表,而B≠空表,或者两者均不为空表,且A的首元小于B的首元,则 AB;否则 AB。 解题分析: (1)算法要求对两个顺序表进行“比较”,是一种“引用型”操作,因此在算法中不应该破坏已知表。 (2)按照规定,只有在两个表的长度相等,且每个对应元素都相同时才相等;否则两个顺序表的大小主要取决于两表中除去最大公共前缀后的第一个元素。 int compare( SqList A, SqList B ) {//若 AB,则返回-1;若A=B,则返回0;若AB,则返回1 j=0; while ( jA.length jB.length ) if (A.elem[j]B.elem[j]) return(-1);  else if(A.elem[j]B.elem[j]) return(1);     else j++; if(A.length==B.length) return (0);   else if(A.lengthB.length) return(-1);    else return(1);  } // compare O(Min(A.length,B.length)) 例2.试设计一个算法,用尽可能少的辅助空间将顺序将顺序表中前 m 个元素和后 n 个元素进行互换,即将线性表(a1,a2,…,am,b1,b2,…,bn) 改变成 (b1,b2,…,bn, a1,a2,…,am)。 算法1:(a1,a2,…,am,b1,b2,…,bn) 从表中第m+1个元素起依次插入到元素a1之前。则首先需将该元素bk(k=1,2,…,n)暂存在一个辅助变量中,然后将它之前的 m 个元素(a1,a2,…,am)依次后移一个位置。显然,由于对每一个bk都需要移动m个元素,因此算法的时间复杂度为O(m×n)。 * 第二章 线性表 2.1 线性表的逻辑结构 2.2 线性表的顺序表示和实现 2.3 线性表的链式表示和实现 2.4 一元多项式的表示 线性结构的基本特征为: 1.集合中必存在唯一的一个“第一元素”; 2.集合中必存在唯一的一个 “最后元素” ; 3.除最后元素在外,均有 唯一的后继; 4.除第一元素之外,均有 唯一的前驱。 线性结构 是一个数据元素的有序(次序)集。 线性表是最常用且最简单的一种线性结构。 在数据元素的非空有限集中, 含有 n 个数据元素的线性表是一个数据结构: List = ( D, R ) 其中: D = { ai | ai ∈ElemSet, i = 1, 2, ... , n, n≥0 } R = { ai-1 ,ai | ai-1 ,ai∈D, i = 2, ... , n } 称 n 为线性表的表长; 称 n = 0 时的线性表为空表 设线性表为 (a1,a2, . . . ,ai,. . . ,an), 称 i 为 ai 在线性表中的位序 位序从1开始计算。 2.2 线性表的顺序表示和实现 顺序映像:以 x 的存储位置和 y 的存储位置之间某种关系表示逻辑关系x, y。 最简单的一种顺序映像方法是: 令 y 的存储位置和 x 的存储位置相邻。 一. 顺序映像 线性表的顺序表示指的是 用一组地址连续的存储单元依次存放线性表中的数据元素。 即以存储位置相邻表示位序相继的两个数据元素之间的前驱和后继的关系(有序对ai-1,ai) 线性表的起始地址 称作线性表的基地址 …… an …… ai ai-1 …… a2 a1 以“存储位置相邻”表示有序对ai-1,ai,即:LOC(ai) = LOC(ai-1) + C 所有数据元素的存储位置均取决于第一个数据元素的存储位置 LOC(ai) = LOC(a1) + (i - 1)×C 一个数据元素所占存储量 基地址 线性表第i个元素的地址

文档评论(0)

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

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

1亿VIP精品文档

相关文档