软件开发技术基础第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)返回单链表中指定序号的结点的指针 (3)从单链表中删除第i个结点 (4)在第i个位置插入新结点x (5)在单链表中查找数据值为x的结点 3.其他形式的链表 第*页 (1)单循环链表 (2)双向链表 head ... a1 a2 an head head ... ... an a2 a1 第*页 栈是限制在表的一端进行插入和删除操作的线性表。允许进行插入和删除操作的一端称为栈顶,另一端称为栈底。栈的示意图如图2-10所示。如果多个元素依次进栈,则后进栈的元素必然先出栈,所以栈又称为后进先出(LIFO)表。栈设有一个栈顶指针标志栈顶位置。栈的主要操作有: ? 创建空栈。 ? 进栈(push)操作:在栈顶插入元素。 ? 出栈(pop)操作:从栈顶删除元素。 ? 读栈顶元素:只是读出栈顶元素,并不改变栈内元素。 a1 a3 a2 进栈 出栈 top 1.顺序栈 第*页 ⑴顺序栈的初始化 ⑵进栈操作 ⑶出栈操作 ⑷取栈顶元素 2.链式栈 (1)进栈操作 (2)出栈操作 3.栈的应用举例 第*页 【例2-3】假定表达式是由不超过四个实数进行四则运算构成的算式,现在要编写一个程序,利用顺序栈计算表达式的值。 用户输入a,b,c,d的值,如:2.5 1.5 6.3 3.3 再输入后缀表达式,如:ab+cd-* 则表示的意思是:(2.5+1.5)*(6.3-3.3) 计算结果应为:12 解:本例处理的对象主要是输入的后缀表达式,以字符串的形式输入,然后从第1个字符开始读取,如果是字符a,b,c或d时将相应的数入栈,读到的是运算符时,出栈两次并计算再将结果入栈。 1.循环队列——队列的顺序存储 第*页 a b c front rear 3 0 1 2 4 5 6 7 front rear A B C D 3 0 1 2 4 5 6 7 front rear 3 0 1 2 4 5 6 7 front rear A B C D F G E 2.链队列——队列的链式存储 第*页 Q a1 an ∧ front rear 非空链队列 3.队列的应用举例 第*页 【例2-4】利用队列实现一组整数的排序。 解:用队列排序的思想就是每取一个数据,就和队列A中的元素作比较,将小的元素移到另一个空队列B中,再将这个元素放到B的队尾,将A中的其他元素逐次移到B中,如此循环,直到所有元素。 分析:本程序在Q[0]和Q[1]之间转换时,使用了类似循环队列从队尾转到队头的方法(求余运算),其下标转换的关键语句是: j=(k+1)%2; 本例也可作为一种排序方法来看待,其排序效率与后面讲到的各种简单排序法相仿。 1.二维数组的概念及存储 第*页 二维数组Amn的数据由元素aij构成,其中i = 1~m,j = 1~n,aij的类型既可以是整型、实型等基本类型,也可以是结构体或类等复杂类型。 (1)行优先顺序存储 将数组元素按行向量排列的先后次序,逐行存储元素。即第i+1行紧接在第i行后面存储,因此二维数组Amn的按行优先存储的序列为: a11, a12, …, a1n, a21, a22, …, a2n, ……, am1, am2, …, amn (2)列优先顺序存储 将数组元素按列向量排列的先后次序逐列存储,称为列优先或按列存放。即第j+1列紧接在第j列后面存储,因此二维数组Amn的按列优先顺序存储的线性序列为: a11, a21, …, am1, a12, a22, …, am2, ……, a1n, a2n, …, amn 2.矩阵压缩存储 第*页 (1)对称矩阵和三角矩阵的压缩存储 对称矩阵中的元素关于主对角线对称,故只要存储矩阵中上三角或下三角中的元素即可。这样,能节约近一半的存储空间。 (2)稀疏矩阵的压缩存储 稀疏矩阵中零元素很多,为了节省存储单元,可只存储矩阵的非零元素。由于非零元素的分布一般是没有规律的,因此在存储非零元素的同时,还必须存储非零元素所在的行号和列号。 M = 3.数组应用举例 第*页 【例2-5】在图2-15所示的迷宫中,寻找一条由a到b的简单路径。 解:使用矩阵path[7][7]表示图2-15所示的迷宫,位置(0,0)表示起点,位置(6,6)表示终点。若位置(i,j)可以进入,则令path[i][j]=1;否则令path[i][j]=0。 分析: 本例将表示栈的变量top、posx[]、posy[]等以及矩阵维数等设为全局变量,是为了在程序中更方便地使用它们。在运行过程中,栈始终保持着从起点到当前位置的简单路径,其内容随着搜索位置的变化而变化。当路径找到后,栈就不再变化了。 本例以二维数组为基础,编写

文档评论(0)

132****9295 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档