- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法第二章课件
第二章?????? 线性表
?
一 、内容提要
?
1.线性表是元素间约束力最强的一类数据结构。
2.线性表的逻辑结构定义,对线性表定义的操作。
3.线性表的存储结构:顺序存储结构和链式存储结构。
4.线性表的操作在两种存储结构中的实现。
5.一元多项式的线性表表示方法,及高次(稀疏)多项式的抽象数据类型定义、表示和加法的实现。
?
二 、学习重点
?
1.?
2.?
3.?
4.?
5.?
6.?
7.? p:=la^.next,而在静态链表中则i:=sa[0].next;相对p:=p^.next,有i:=sa[i].next来找到第i个元素的后继。
?
三、例题解析
?
1.设线性表以顺序存储结构存于a(1..n)中,试编写算法将该线性表就地逆置。
【分析】 向量逆置有几种方法,如逆向读入到另一数组中,在正向对应赋值,即:
FOR i:=n DOWNTO 1 DO b[n-i+1]:=a[i]; FOR i:=1TO n DO a[i]:=b[i];
这里要求“就地逆置”,即不能另用一数组空间。
【算法】
PROC invert(VAR a:arr; n:integer);
{a是存储线性表的一维数组,有n 个元素,本算法将a逆置。}
FOR i:=1TO (n DIV 2) DO a[i]?a[n-i+1];
endp;
【讨论】 将n个元素的一维数组逆置,为什么循环控制变量用n div 2,而不用n?
?
2.编写在单链表上进行排序的算法
【分析】 这里使用插入排序。链表中插入元素要知道待插入元素位置的前驱, 以pre表示之。结束的条件是链表为空。
【算法】
PROC insertsort(VAR la:linklist);
{la是带头结点的单链表的指针,本算法将链表中元素正序排序。算法的基本思想是先假定第一个元素有序,然后从第二个元素开始,依次插入到有序的表中,直到全部元素插入完为止}
p:= la^.next^.next;{假定链表非空,即至少有一个结点}
la^.next^.next:=nil;{设有序链表中当前只有一个结点}
found:=false;
WHILE (pnil)AND NOT found DO
[s:=p^.next;{记住下一个结点}
pre:=la;
q:=la^.next;
found:=false;
WHILE(qnil)AND NOT found DO
IF q^.datap^.data THEN [pre:=q; q:=q^.next]
ELSE found:=true;
p^.next:=q;
pre^.next:=p;{p结点插入}
p:=s;{取下一个结点}
]
ENDP; {insertsort}
【讨论】算法中found为一布尔变量,为的是在链表到尾前,如找到p的插
入位置,即可退出WHILE循环。这里循环条件未写成:
(pnil)AND (q^.datap^.data)
因为若q=nil ,则再引用q^.data是无意义的。请记住这种退出循环,引入布尔变量的作法。
3.设两个非递减有序的线性表各有m和n个元素(m0,n0),分别存于一维数组a和b中,且a 的存储空间足够大。试编写算法将两线性表合并成一线性表,结果仍是非递减有序,要求算法的时间复杂度是o(m+n)。
【分析】 两个有序线性表合并成一个有序表,教材中已有讨论,算法非常简单。本算法要求复杂度为O(m+n),这是着重点。题目叙述中有“a的空间足够大”,暗示出若将m+n个元素合并到a中,不会溢出。为使数据移动次数最少,应先将两表中最大元素置于m+n的位置上
您可能关注的文档
最近下载
- 建筑工程图集 99S203、99(03)S203:消防水泵接合器安装.pdf VIP
- 在2025年区庆祝第41个教师节暨表彰大会上的讲话.docx VIP
- 人教版四年级数学《上册全册》全套精品教学课件小学优秀课堂课件.pptx VIP
- 水库生态养殖可行报告.docx
- 隧道巡检机器人研发项目可行性研究报告.docx VIP
- 教科版(2024)小学科学一年级上册(全册)教案及反思(含目录).docx VIP
- 景观绿化工程施工设计方案.docx VIP
- 建筑结构与选型课程设计.docx VIP
- 建筑结构选型课程设计.docx VIP
- 安徽省庐巢七校联考2022-2023学年高二下学期3月期中英语试卷(含答案).pdf VIP
文档评论(0)