“数据结构与算法”课程学习总结报告
数据结构课程总结
孙博110401104511计本3班
如何合理的组织数据、高效的处理数据是扩大计算机应用领域、提高软件效率的关键。
而在软件开发过程中人们会要求软件工程师们使程序有更高的运行效率。因此要成为一名合格的软件编程员,必须具备数据结构领域和算法设计领域的专门知识。
本学期我们在李红老师的带领下学习了《数据结构结构与算法》一书。这本书安排十分合理,在第一章对全书进行导引和学习的基础知识、预备知识。在26章中使逻辑结构为“线性”的数据结构及其应用知识内容。在7、8章中使逻辑结构中的为“树形”的数据结构及应哟就能够只是内容。在第九章中使逻辑结构为“集合性”的数据元素在三列存储下的数据结构及其应用知识内容。在第十章使逻辑结构为“图形”的数据数据结构及其应用知识内容。下面将对各章的内容惊醒总结:
第一章:首先介绍了数据的相关知识,讲述了数据的概、构成等,数据的最小组成单位。然后讲述了数据类型与数据结构。数据类型包括概念及定义,数据类型包括简单数据类型和复杂数据。简单数据类型有:整数,实属,字符,指针,枚举量等。而复杂数据类型包括:数组,结构图,共用体。而数据结构主要使讨论元素之间的关系,数据结构包括三方面内容,及逻辑结构,存储结构以及一组运算集合。数据的逻辑结构有四种基本结构:集合性结构,线性结构,树形结构,图形结构。数据的存储结构是指数据严肃在存储器中的存储方式包括顺序存储,链表存储,索引存储,散列存储。然后介绍以前学习的C语言(及本教材的使用的算法描述工具)知识锦兴路回顾包括指针、结构比阿亮、函数、递归、动态存储分配、文件操作等内容。
第二章:顺序表及其应用主要介绍的是线性逻辑结构的呼声几乎在顺序存储方法下的数据结构顺序标的概念、数据类型、数据结构、基本运算及相关应用问题。应用一:查找介绍了两种方法:简单顺序查找(从书序标的一端来时扫描,将待查找元素与数据节点中的个元素比较。若相等,则查找成功,否则失败)和二分查找(将表中间的记录的关键字与给定的值比较,若相等,则成功。否则,将顺序表风味左右两个字表,然后在子表中进一步查找。)
应用二:排序问题介绍了交换排序,选择排序,插入排序,归并排序。
1、插入排序
包括直接插入排序(将顺序表分为左右两个子表,左子表为有序表,右子表为无序表,将右子表中的元素插入左子表中)和希尔排序法(将整个待排序的元素序列分割成若干子序列,对每个子序列分别进行直接插入排序,当整个带排序元素序列“基本有序时”,在进行直接插入排序)2、交换排序
a)冒泡排序:两辆比较待排序元素的关键字,发现相反时即进行交换,知道没有
逆序的元素为止。b)快速排序算法:在待排序的元素中选定一个“中间数”,将其他数据元素与该
数比较,将比其小的数据放道左子表中,比起大的放入右子表中。
3、选择排序a)直接选择排序:将数据进行多谈排序,每趟选出其中的最大数或最小数放在最终位置上,每趟中已排好的数不再参加下一轮的排序。b)堆排序:输出堆顶元素将剩余元素按关键字大小重诚信排列成一个堆重复
上述2个步骤
4、归并排序
将两个或两个以上的有序表合并成一个新的有序表。应用三:字符处理问题
介绍了串和顺序串的定义及相关概念,还有顺序串的基本算法。
第三章:介绍链表。链表中数据元素的存储不一定是连续的,还可以占用任意的、不连续的物理存储区域。与顺序表相比,链表的插入、删除不需要移动元素,给算法的效率带来较大的提高,且在存储空间上有动态申请的优点。这一章中介绍了链表的节点结构、静态与动态链表的概念、链表的基本运算(如求表长、插入、查找、删除等)、单链表的建立(头插法和尾插法)以及双向循环链表的定义、结构、功能和基本算法。弄清其个运算的算法思想及其时间复杂度和空间性能。最后介绍了链表之中存储结构在实际中的相关应用。
a)单循环链表是一种首尾相接的单链表,终端结点的指针域指向开始结点或头结点。链表终止条件是以指针等于头指针或尾指针。采用单循环链表在实用中多采用尾指针表示单循环链表。优点是查找头指针和尾指针的时间都是O(n),不用遍历整个链表。
b)双链表就是双向链表,就是在单链表的每个结点里再增加一个指向其直接前趋的指针域prior,形成两条不同方向的链。由头指针head惟一确定。双链表也可以头尾相构成双循环链表。双链表上的插入和删除时间复杂度均为O(1)。
顺序表和链表的比较
a)基本空间的考虑存储密度是指节点数据本身所占的存储量除以结点构所占的存储总
量所得的值。值越大存储空间利用率越高。
顺序表是静态分配的,存储密度为1,链表是动态分配的,存储密度小于1。b)顺序表适用于静态查找,要进行删除和插入操作时,需移动大量结点。链表适用于做动态的插入和删除。第四章:堆栈是运算受限制的线性结构。其基本运算方法与顺序表和链表运算方法基本相同,不同的是堆栈须遵循“先进后出”的规则,对堆栈的操作只能在栈顶进行;堆栈在文字处理,匹配问题和算术表达式的求值问题方面的应用。
a)栈的基本运算有六种:构造空栈:InitStack,判栈空:StackEmpty,判栈满:
StackFull,进栈:Push,退栈:Pop,取栈顶元素:StackTopb)在顺序栈中有“上溢”和“下溢”的现象。“上溢”是栈顶指针指出栈的外面是出错状态。“下溢”可以表示栈为空栈,因此用来作为控制转移的条件。
c)顺序栈中的基本操作有六种:构造空栈,判栈空,判栈满,进栈,退栈,取栈顶元
素d)链栈则没有上溢的限制,因此进栈不要判栈满。链栈不需要在头部附加头结点,只
要有链表的头指针就可以了。e)链栈中的基本操作有五种:构造空栈,判栈空,进栈,退栈,取栈顶元素
第五章:队列及其应用,我们知道队列是一种特殊的线性表,是一种具有线性逻辑结构的数据元素的集合。而队列的运算遵循“先进后出”的原则,因此,队列也是一个运算受限制的线性表。a)队列的基本运算有六种:置空队:InitQueue,判队空:QueueEmpty,判队满:QueueFull,入队:EnQueue,出队:DeQueue,取队头元素:QueueFront
b)顺序队列的“假上溢”现象:由于头尾指针不断前移,超出向量空间。这时整个向
量空间及队列是空的却产生了“上溢”现象。为了克服“假上溢”现象引入循环向量的概念,是把向量空间形成一个头尾相接的环形,这时队列称循环队列。c)判定循环队列是空还是满,方法有2种:一种是另设一个标志变量来判断;第二种
是少用一个元素空间,入队时先测试(q->rear%m=q->front?)满:空。d)队列的链式存储结构称为链队列,一个链队列就是一个操作受限的单链表。为了便
于在表尾进行插入的操作,在表尾增加一个尾指针,一个链队列就由一个头指针和
一个尾指针唯一地确定。链队列不存在队满和上溢的问题。在链队列的出队算法中,要注意当原队中只有一个结点时,出队后要同进修改头尾指针并使队列变空。
第六章:介绍了特殊矩阵和广义表的概念与应用。其中,特殊矩阵包括对称矩阵、三角矩阵、对角矩阵和稀疏矩阵,书中分别详细介绍了它们的存储结构。其中三元组和十字链表这两种
结构尤为重要;对着两种结构的建立了应用要掌握。稀疏矩阵的应用包括转置和加法运算等。最后介绍了广义表的相关概念及存储结构,关于它的应用,课本中举了m元多项式的表示问题。
第七章:二叉树的知识是重点内容。在介绍有关概念时,提到了二叉树的性质以及两种特殊的二叉树:完全二叉树和满二叉树。接着介绍二叉树的顺序存储和链接存储以及生成算法。重点介绍二叉树的遍历算法(递归算法、先序、中序和后序遍历非递归算法)和线索二叉树。二叉树的应用:基本算法、哈夫曼树、二叉排序树和堆排序,其中关于二叉排序树和哈弗曼书的构建是重点。
a)两种特殊的二叉树:完全二叉树(非叶子节点均有两个孩子节点并且对于仍一层某
一节点有孩子节点,该层所有节点均有孩子节点)和满二叉树(在完全二叉树上的基础上最下层从左到右删除若干个节点。)
b)二叉树的5个重要性质
c)根据结点的次序不同可得三种遍历:先序遍历,中序遍历、后序遍历。
d)二叉树的应用:基本算法、哈弗曼树、二叉排序树和堆排序
第八章:介绍了树和森林。树与二叉树是不同的概念。教材介绍了树和森林的概念、遍历和存储结构,还有树、森林和二叉树的相互关系,树或森林怎样转化成二叉树,二叉树又如何转换为树和森林等算法。
第九章:散列结构是一种查找效率很高的一种数据结构。本章的主要知识点有:散列结构的概念及其存储结构、散列函数、两种冲突处理方法、线性探测散列和链地址散列的基本算法以及散列结构的查找性能分析。
第十章:介绍了图的概念及其应用,是本书的难点。图的存储结构的知识点有:邻接矩阵、邻接表、逆邻接表、十字链表和邻接多重表。图的遍历包括图的深度优先搜索遍历和广度优先搜索遍历。其余知识点有:有向图、连通图、生成树和森林、最短路径问题和有向无环图及其应用。有向无环图重点理解AOV网和拓扑排序及其算法。
心得体会以及建议:通过学习《数据结构与算法》我们可以设计出更好的算法,高效地组织数据。一个程序无论采用何种语言,其基本算法思想不会改变。“软件开发好比写作文,计算机语言提供了许多华丽的辞藻,而数据结构则考虑如何将这些辞藻组织成一篇优秀的文章来。”在学习这门课中,要熟悉对算法思想的一些描述手段,包括文字描述、图形描述和计算机语言描述等。因此,计算机语言基础是必须的,因为它提供了一种重要的算法思想描述手段机器可识别的描述。
这门课结束之后,我总结了学习中遇到的一些问题,最为突出的,书本上的知识与老师的讲解都比较容易理解,但是当自己采用刚学的知识点编写程序时却感到十分棘手,有时表现在想不到适合题意的算法,有时表现在算法想出来后,只能将书本上原有的程序段誊写到自己的程序中再加以必要的连接以完成程序的编写。针对这一情况,我会严格要求自己,熟练掌握算法思想,尽量独立完成程序的编写与修改工作,只有这样,才能够提高运用知识,解决问题的能力。
教学的建议
1、建议在上课过程中加大随堂练习的分量,以便学生能当堂消化课堂上学习的知识,也便于及时了解学生对知识点的掌握情况,同时有助于学生保持良好的精神状态。2、建议在课时允许的情况下,增加习题课的分量,通过课堂的习题讲解,加深对知识点的掌握,同时对各知识点的运用有一个更为直观和具体的认识。
以上便是我对《数据结构与算法》这门课的学习总结,我会抓紧时间将没有吃透的知识点补齐。今后我仍然会继续学习,克服学习中遇到的难关,在打牢基础的前提下向更深入的层面迈进!
扩展阅读:数据结构与算法课程学习总结报告
数据结构与算法课程学习总结报告
计科系10级计本
一、数据结构与算法知识点
《数据结构与算法》这本书共有十一个章节。从第一章的数据结构和算法的引入,介绍了数据和数据类型、数据结构、算法描述工具、算法和算法评价四个方面的知识。第二章则介绍了顺序表及其应用的相关知识。从顺序表的基本概念开始,分别介绍了顺序表基本算法、顺序表基本算法性能分析、顺序表的应用。顺序表应用又涉及多方面,有查找问题、排序问题、字符处理问题。其中查找分简单顺序查找,有序表的二分查找,分块查找三种。排序中分插入排序(直接插入排序、希尔排序)、交换排序(冒泡排序、快速排序)、选择排序(直接选择排序)、归并排序。第三章链表及其应用,分为链表的基本概念、单链表的数据结构、单链表的基本算法、循环链表、链表的应用。第四章堆栈及其应用,分为堆栈堆的基本概念、顺序栈及其基本算法、链栈及其基本算法、堆栈的应用。第五章队列及其应用,分为队列的基本概念、顺序队列及其基本算法、链队列及其基本算法、基数排序问题。第六章特殊矩阵和广义表及其应用,分为数组与矩阵,特殊矩阵的压缩存储、矩阵的应用实例、广义表。第七章二叉树及其应用。分为二叉树的基本概念、二叉树存储结构、二叉树的遍历算法、线索二叉树、二叉树的应用(基本算法、哈夫曼树、二叉排序树、堆和堆排序)。第八章树和森林及其应用。分为树和森林的基本概念,树的存储结构、树的基本算法及性能分析、树的应用(B树)。第九章散列结构及其应用。分为散列结构的概念等。着重学习了散列表、散列函数、冲突处理方法(开放定址法和链地址法)。第九章图及其应用。分为图的概念、图的存储结构及其基本算法、图的遍历及算法、有向图的连通性和最小生成树、图的最小生成树、非连通图的生成森林算法、最短路径、有向无环图及其应用。第十一章算法性能分析和算法设计方法简介。
二、对各知识点的掌握情况
综合以上知识点,我对自我学习成果作如下总结:对于第一章对数据结构的概念理解颇深,大概是每次都要谈论到吧。对算法的时间性能,空间性能基本了解。这些在后面的章节都会有运用。第二章顺序表较为清晰。如何去建一个顺序表,顺序表的一些基本算法都可以很好运用。在顺序表应用中对二分查找映象深刻。对于排序能了解其算法思想。对字符串的处理应用的较少,没有深入了解。第三章链表的知识,由于链表在上学期就有所接触,老师也强调其作用,对链表掌握还好,但在第三章中又学习到了新的内容,对其数据结构进行了分析,增加了循环链表,对知识进行补充。第四章堆栈,堆栈是一个运算受限的线性表,可对比顺序表的学习,不同的是还有链栈,这部分感觉是全书最容易的部分了。第五章队列是接着堆栈之后的又一个运算受限制的线性表,感觉和堆栈一样简单。第六章矩阵和广义表是我的弱项,在这部分的学习过程中没有用心学,现在正在深入研究。接下来的第七章第八章是全书的重点,特别是第七章二叉树,所以学习的重心也偏向这两章。对二叉树掌握较好,其概念,存储,遍历有很好的掌握。就是对二叉排序树有点生疏,它的生成算法不是很会。第八章树和森林,树与二叉树之间的转换,森林与二叉树的转换算法思想基本掌握。第九章散列的一些知识,没有深入学习,大概了解了散列存储结构散列表,散列函数,冲突的处理方法。第十章感觉是很难的一章,知识点多,能够画有向图和无向图的邻接矩阵,邻接表。图的深度遍历和广度遍历,但是其算法只是能读懂。三、学习体会
开学伊始,听说要学数据结构与算法,而且考试通过率极低,就带着这样恐惧的心理开始学习了。通过学习数据结构与算法让我对程序有了新的认识。“数据结构和算法”课程主要学习在软件开发中涉及到的各种常用数据结构及其常用算法,在此基础上,学习如何利用数据结构和算法解决一些基本的应用问题,通过学习我了解了相关领域的基础知识和基本应用。知道了学习一种数据结构必须掌握该数据结构的定义,其包括逻辑结构,存储结构和基本算法还有基本应用知识。对于一个应用程序,不是它能运行,能显示结果就行了,还要考虑它的各方面的性能,时间性能,空间性能。以此节约空间和时间。给定一个程序首先要分析其应有的数据结构。怎么存储,怎么性能会比较好。“数据结构与算法”是一门很有用的科目,可是也是很令人头疼的学科,这也锻炼了我们迎难而上的毅力。当然学习数据结构与算法是建立在学习好计算机语言的基础上的,学习编程是枯燥无味的,学据结构给我带来更多的是思考的东西。
课程结束我总结了学习过程中遇到的困难,有时写不出合条件的算法,在写实验报告时,有时就是将书上的源程序搬上去,对程序进行一些修改。针对这一情况我会慢慢改正。多加思考。
四、对课程教学的建议
1、课程课时较紧,课堂上的练习时间较少,讲解的东西越多,头脑有时就很混乱。2、长期的ppt教学,会使产生疲劳,稍不留神,思维开了小差,就跟不上了。可以适当结合ppt和例题讲解。。通过课堂的习题讲解,加深对知识点的掌握,同时对各知识点的运用有一个更为直观和具体的认识。
友情提示:本文中关于《“数据结构与算法”课程学习总结报告》给出的范例仅供您参考拓展思维使用,“数据结构与算法”课程学习总结报告:该篇文章建议您自主创作。
来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。
《“数据结构与算法”课程学习总结报告》
由互联网用户整理提供,转载分享请保留原作者信息,谢谢!
http://m.bsmz.net/gongwen/727351.html
- 上一篇:数据结构与算法课程学习总结报告
- 下一篇:数据结构课程设计总结(模板)