《数据结构与算法》第2章 线性表.ppt

《数据结构与算法》第2章 线性表.ppt

  1. 1、本文档共78页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 线性表的应用——多项式相加与Josephus问题 由上图中的两个链表表示的多项式相加得到的“和多项式C”链表如下图所示。线性链表类型适用于一般的线性表,而表示一元多项式的应该是有序链表。 线性表的应用——多项式相加与Josephus问题 多项式的类定义: 线性表的应用——多项式相加与Josephus问题 线性表的应用——多项式相加与Josephus问题 多项式类的几种构造函数以及析构函数的定义: 线性表的应用——多项式相加与Josephus问题 线性表的应用——多项式相加与Josephus问题 多项式相加 多项式相加算法: 线性表的应用——多项式相加与Josephus问题 例2-6 Josephus问题,设有n个人围坐一圈。从第s人开始进行1到m报数,数到第m个人出列。然后,再从出列的下一个人重新开始报数,数到第m个人再出列。如此反复,直到所有的人全部出列为止。现要求按出列次序得出n个人的顺序表。现以n=8,s=1,m=4为例,用图说明报数出列的过程,如图所示。图中用s1作为浮动的指针,指向每次报数的起始位置。小圆圈内的数字为报数出列的人员,由图得到n个人按次序报数出列的人员顺序为④⑧⑤②①③⑦⑥。 例2-6 例2-6 为了用计算机求解,设想有一组1~n的整数作为待报数的序列。将它们置于数组p中。当p[i]报数出列时,为了节省空间,可将p[i]从数组中删除并暂存在另一个存储单元w中,且将p[i+1]~p[n]都向前移动一个位置。再将原保留在w中的p[i]值置于p[n]中,如下图所示;下次再对剩下的n–1个元素进行上述操作,再将报数出列的元素置于p[n–1]中;……;如此反复,直至只剩下一个元素时,就将其保留在p[1]中原处。此时p中保留了报数出列的序列元素的逆序,最后再将p数组中的元素逆转,即得到了按次序报数出列人员的顺序表。 例2-6 如何确定每次报数出列的位置?由上图可见,由于元素出列后,后面的元素都要向前挪动一个位置,因此,本次报数的出列位置也就是下次报数的起始位置,s1有双重含义。因为报数是首尾连续进行的,所以可用取模的方法;由这次报数的起始位置推算得到下次的报数位置,即是本次报数的出列位置。设i为每次参加报数的人数,则列出位置可由下式推算而得:s1←(s1+ m–1) Mod i Josephus问题算法如下。①赋初值s1←s。② 报数出列,循环i以–1为步长,从n到2重复执行:(a)求“出列”位置s1←(s1+m–1)Mod i; if s1=0 then s1←i;(b)出列w←p[i];(c)元素前移:循环j以1为步长,从s1到i–1重复执行;p[j]←p[j+1];(d)令出列元素于报数序列之尾p[i]←w;③逆转出列的序列,循环k以i为步长,从i到?i/2? 重复执行:(a)w←p[k];(b)p[k]←p[n–k+1];(c)p[n–k+1]←w。(注:?i/2? 为不大于i/2的最大整数。)④输出已出列的序列,算法结束(具体程序请读者自己完成)。 本 章 总 结 学习要点 本章主要介绍线性表的概念及其逻辑结构形式定义;顺序和链式两类存储结构的描述及实现方法;在线性表的顺序和链式两类存储结构上,如何进行数据元素的插入、删除、定位、表的归并、集合等基本运算,线性表顺序与链式实现的时空性能比较,以及用线性表表示一元多项式及其加法运算等内容。主要学习要点如下:①线性表的概念、形式定义、线性结构的定义;②顺序表与各种链表的优缺点及其适用场合;③顺序表、单链表、循环链表的组织方法和实现插入、删除、定位等基本运算的算法;④在各种链表上进行算法设计的基本技能;⑤线性表的顺序实现与链接实现在空间性能和时间性能上的差异。 本 章 总 结 基本要求 (1)深刻理解线性表及其运算和线性结构的概念; (2)掌握线性表的逻辑结构定义,并理解其形式化定义; (3)弄清线性结构的基本特征; (4)理解线性表中数据元素的“直接前驱”和“直接后继”的概念; (5)弄清线性表12种基本运算的功能,特别是插入、删除及定位三种重要操作的定义; (6)深刻领会线性表的顺序存储结构(顺序表)的基本思想; (7)清楚顺序表表方法的特点、类型定义、组成部分及作用、容量及表长的区别; (8)灵活地应用线性表在顺序存储结构上的求址公式; 本 章 总 结 (9)熟练地掌握顺序表的插入、删除运算的算法和图示法表示; (10)深刻领会线性表的链式存储结构基本思想; (11)清楚单链表的

文档评论(0)

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

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

1亿VIP精品文档

相关文档