数据结构纪颖中国机械工业教育协会组编第2章线性表课件教学.pptVIP

数据结构纪颖中国机械工业教育协会组编第2章线性表课件教学.ppt

  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.1.1 线性表的定义 2.1.2 线性表的顺序存储 作业 2.1.1 线性表的定义 2.1.2 线性表的顺序存储 在内存中用地址连续的一块存储空间顺序存放线性表的各元素,用这种存储形式存储的线性表也可称其为顺序表。 当设 a0的存储地址为Loc(a0)时,每个数据元素占d个存储地址,则第i个数据元素的地址为: Loc(ai)=Loc(a0)+i*d 1≤i<n 只要知道顺序表首地址和每个数据元素所占地址单元的个数就可求出第i个数据元素的地址来,这也是顺序表具有按数据元素的序号随机存取的特点。 线性表的顺序存储示意图 线性表的顺序存储 定义一个线性表l(为便于区别,用大写字母l表示线性表)list l ;或list *l ;这种顺序存储结构也称作静态存储结构。其中后者的优势在于能进行数据的双向传递。 作业 1.简述线性结构的特点是什么? 2.若线性表的结构定义如下。 #define MAX 32 typedef struct { char data[MAX]; int last; } list; list l;或list *l; 请说明用list定义的线性表l的最大长度是多少?线性表的数据类型是什么?2种l的定义区别是什么? 2.2 线性表运算的实现 2.2.1 线性表的基本操作 2.2.2 线性表上基本算法的实现 2.2.3 顺序表应用举例 作业 2.2.1 线性表的基本操作 2.2.2 线性表上基本算法的实现 1. 线性表的初始化 顺序表的初始化就是构造一个空表,或者说是为了给线性表l分配存储空间。由于采用的是静态存储结构(数组),线性表的存储空间是由编译系统分配的,因此,只要对线性表的长度进行初始化即可 2. 求线性表的长度 取出线性表的last域的值 3. 插入运算 在保证所给插入位置i合理的前提下,必须先将第i个及其以后的数据元素,向后移动一个元素的位置,然后才能将新的元素x存入留出的空位置上,插入后使原表长last的长度值加1。 ⒋ 删除运算 在此讨论线性表的删除运算是指将表中第 i 个元素从线性表中去掉,因为是顺序存储结构,在保证所给删除位置i合理的前提下,删除后必须将第i+1个及其以后的元素前移一个位置,最后表的长度减1。 5. 查找 在此讨论线性表的查找是指在线性表中查找与给定值x相等的数据元素。从线性表的第一个元素 l-data[1] 起依次和x比较,直到找到一个与x相等的数据元素,则返回它在线性表中的存储下标;或者查遍整个表都没有找到与 x 相等的元素,返回0。 2.2.3 顺序表应用举例 例2-1 有两个线性表la和lb,类型为list。编写一个算法将它们合并成一个线性表la ,要求将lb接到la的后面,并且要求lb中的元素在la中已存在,则不把该元素合进去。 算法思路:把线性表la和lb的长度分别赋给n和m;从lb中的第一个元素起,对每一个元素与la中的每一个元素进行查找比较,若未找到则将这个lb元素插入到la表尾,否则继续比较下一个,直到lb中所有元素比较完,则合并完成;并应保证la表足够长。 算法如下所示: void link(list *la, list *lb) { int i,j,n,m; n= length( la);m=length(lb); for (i=1;i=m;i++ ) { x=lb-data[i]); j=locate( la, x); if(j==0) insert(la, la-last+1,x); } } 例2-2 已知一个线性表la中的元素已按升序排列,其类型为list。编写一个算法将该线性表中的重复元素删除(即在表中不能有相同的元素)。 算法思路:由于线性表la中的元素已按升序排列,所以值相同的元素必为相邻的元素,因此依次比较相邻的两个元素,若值相等,则删除其中的一个,否则继续向后比较,直到表尾。 作业 1.请指出教材中列出的线性表的10中基本运算中那些属于加工型操作?那些属于引用型操作? 2.做教材习题中的以下题目。 单项选择题:(1),(2) 填空题:(9) 应用题:(3) 2.3 栈 2.3.1 栈的定义及顺序存储 2.3.2 栈的运算 2.3.3 双栈的操作 2.3.4 栈的应用 作业 2.3.1 栈的定义及顺序存储 2.

文档评论(0)

带头大哥 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档