- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第二章 线性表 思考 已知一个非纯集合B(集合中可能含有重复元素),试构造一个纯集合A,使A中只包含B中所有值各不相同的数据元素。 顺序表总结 是线性表的一种表示方法; 是一组地址连续的存储空间; 可用一维数组类型描述,长度可变,数组需动态分配; 优点:可对每个数据元素随机存取,表长是显值; 缺点:在进行插入和删除元素时要进行元素移动,大致移动表长一半的元素。 1.从线性表 LB 中依次察看每个数据元素; 2.依值在线性表 LA 中进行查访; 3.若不存在,则插入之。 GetElem(LB, i)→e LocateElem(LA, e, equal( )) ListInsert(LA, n+1, e) ( n 表示线性表 LA 当前长度) 操作步骤: GetElem(Lb, i, e); // 取Lb中第i个数据元素赋给e if (!LocateElem(La, e, equal( )) ) ListInsert(La, ++La_len, e); // La中不存在和 e 相同的数据元素,则插入之 La_len = ListLength(La); // 求线性表的长度 Lb_len = ListLength(Lb); for (i = 1; i = Lb_len; i++) { }//for } // union void union(List La, List Lb) { 2.2 线性表的顺序存储结构 2.2.1 线性表 把线性表的结点按逻辑顺序依次存放在一组地址连续的存储单元里。用这种方法存储的线性表简称顺序表。 假设线性表的每个元素需占用m个存储单元,并以所占的第一个单元的存储地址作为数据元素的存储位置作为参考点。则线性表中第i+1个数据元素的存储位置Loc(ai+1)和第i个数据元素的存储位置Loc(ai)之间满足下列关系: Loc(ai+1)=Loc(ai)+m ai ai+1 Loc(ai+1) m个字节 Loc(ai) 线性表数据类型的实现 存储结构有两种映像方法:顺序和链式。 线性表的第i个数据元素ai的存储位置为 : a1 a2 ai an Loc(a1) i-1个元素 Loc(ai)=(i-1)*m+Loc(a1) =Loc(a1)-m+i*m 由于Loc(a1)和m都是已知的 所以:V0= Loc(a1)-m Loc(ai)=V0+i*m 由于在高级语言中的一维数组也是采用顺序存储表示,故可以用数组类型来描述顺序表。又因为除了用数组来存储线性表的元素之外,顺序表还应该用一个变量来表示线性表的长度属性,利用C++语言的结构类型来定义顺序表类型。 # define ListSize 100 //表容量 typedef int DataType;//以int为例 struct Sqlist{ DataType data[ListSize]; int length;//当前表中元素数 }; 或 struct Sqlist{ DataType *elem; // 存储空间基址 int Listsize; // 当前分配的存储容量 int length //当前表中元素数 } length ……….. Sqlist data ListSize个 2.2.2 顺序表上实现的基本操作 在顺序表存储结构中,很容易实现线性表的一些操作,如线性表的构造、第i个元素的访问。 注意:C/C++语言中的数组下标从“0”开始,因此,若L是Sqlist类型的顺序表,则表中第i个元素位置是L.data[i-1]。 线性表的基本操作在顺序表中的实现 InitList(L) // 结构初始化 LocateElem(L, e, compare()) // 查找 ListInsert(L, i, e) // 插入元素 ListDelete(L, i) // 删除元素 Status InitList_Sq( SqList L, int maxsize ) { // 构造一个最大容量为 maxsize 的顺序表 } // InitList_Sq 算法时间复杂度: O(1) L.elem = new ElemType[maxsize]; // 为
您可能关注的文档
- 数学:2.2.2《用样本的数字特征估计总体的数字特征》.ppt
- 数学:2.2.2《用样本的数字特征估计总体的数字特征》课件(新人教b版必修3).ppt
- 数学:15.1.2平移的特征课件2(华东师大版八年级上).ppt
- 数学:2.2二项分布及其应用课件四(新人教A版选修2-3).ppt
- 数学:3.1《回归分析的基本思想及其初步应用(二)》课件(新人教a版选修).ppt
- 数学:6.4《扇形统计图》课件(浙教版七年级上).ppt
- 数学:《函数的极值与导数》复习课件.ppt
- 数学:《总体特征数的估计》课件(苏教必修3).ppt
- 数学:《总体特征数的估计》课件3(苏教必修3).ppt
- 数据分组与汇总.ppt
文档评论(0)