2线性表(一顺序表)解说.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文档。上传文档
查看更多
* 逻辑关系,线性表是一种逻辑结构的表达。 线性表的基本运算,也基本上是其他数据类型的基本运算。 * 依次对数据进行处理,这个思路并不难。关键点在于While循环的条件就是边缘处,如写错易造成访问出界。在程序编写中,这种错误非常常见,造成的后果往往是差之毫厘,谬以千里的。 * 伪代码 * 顺序表,既指明了其逻辑结构特征为线性表,又指明了其存储结构为顺序存储。 其逻辑结构和存储结构都是最基本的。 * 代码定义示例。并不是所有顺序表都要这样定义,但是这个定义的要素需要强调:有限的长度,相同性质的数据元素,和存储这些数据元素的连续的存储空间。 * 插入位置越前,需要的移动越多。 * 注意其中对上溢和非法位置的异常情况处理。代码的顽健性在此处体现,也是程序质量的一个重要方面。 * 位置越前,移动的位置越多 * 注意对非法位置的异常情况处理。下溢的情况已经包含在非法位置处理中。 * 时间复杂性分析。实际中只需要定性分析,如正比于n即可。 * * * 一个可以运行的程序必须要有入口,这个入口就是main函数 * 优缺点都很突出。 存储密度的定义见P87,下节课会再讲到。 * 计算机中的内存做什么用? 对每个进程所占用内存,分四个区:代码区、全局/静态区、动态分配区(堆)、局部数据区(栈)。 Malloc函数可以从堆中分配空间,而函数内声明的变量是存在于栈中的。 * 同刚才的Creat 函数 * 算法复杂性的分析在实际应用中很有意义。 主要考虑与待解决问题规模与运算时间之间的关系。 * 在实际使用中,算法复杂性都是用简化的:渐进复杂性?渐进复杂性的阶,这样的概念来衡量的。 * 图示为O n2 举例 * 由于存储设备的成本越来越低,通常情况下考虑时间复杂度多一些。 * 图、表示意更直观 * 图、表示意更直观 * 上次课中顺序表插入和删除运算的复杂性举例。 注意,O n 同时也是O n2 … θ n 是更准确的概念,然而实际中习惯上用O 的情况较多。可能因为上界足够简单,说明当前算法足够简单。 * 本次课介绍最基本的数据结构——线性表,以及线性表的顺序存储结构的内容。顺序表定义、运算举例都涉及大量c代码,需要较多时间详细介绍。本次课还初步介绍时间性能分析的相关内容。在具体内容介绍过程中使学生回忆起c代码的相关知识,并对性能分析方法有一个具体感知。 * 1.线性表的基本概念——抽象数据类型定义 1 2 3 4 2.线性表的顺序存储结构—顺序表 顺序表:线性表的顺序存储结构 是用一组地址连续的存储单元依次存储线性表的元素。 线性表的第i个元素ai的存储位置为 Loc ai Loc a1 + i?1 ?c 1≤i≤n 起始位置或基地址:Loc a1 b 特点:随机存取 2 1 3 4 Tips: 顺序表的名字,既指明了其逻辑结构特征为线性表,又指明了其存储结构为顺序存储。 2.线性表的顺序存储结构—顺序表的定义 顺序表的c代码定义(例) 第i个元素的下标是i-1; last指示终端结点的位置, last+1是表的长度; typedef int datatype; /* datatype可为任何类型 */ #define maxsize 1024 /* 顺序表可能的最大长度 */ typedef struct datatype data[maxsize]; int last; sequenlist; 2 1 3 4 基本运算:插入 基本运算:删除 基本运算性能分析 应用实例:学籍档案 2.线性表的顺序存储结构—顺序表基本运算:插入 插入运算 先移动,后插入 基本运算 2 1 3 4 2.线性表的顺序存储结构—顺序表基本运算:插入 int INSERT sequenlist ?L, int x, int i /* 将新结点x插入顺序表L的第i个位置上 */ /* L是sequenlist类型的指针变量 */ int j; if L- last maxsize-1 printf “overflow” ;return 0 ; /* 表空间溢出 */ else if i 1 || i L- last +2 printf “error” ;return 0 ; /* 非法位置 */ else for j L- last; j i-1;j-- L- data[j+1] L- data[j]; /* 结点后移 */ L- data[i-1] x; /* 插入x,存在 ?L .data[i?1]中 */ L- last L- last+1; /* 终端结点下标加1 */ return 1 ; /* INSERT */ 注意当 i n+1 时,for循环不执行,也即不需要将任何结点后移。 2 1

文档评论(0)

贪玩蓝月 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档