您好,欢迎来到刀刀网。
搜索
您的当前位置:首页数据结构论文

数据结构论文

来源:刀刀网


数据结构课程总结报告

10计本四班王振华1004014011 大二的第一个学期,我们就接触到了神往已久的“数据结构”这门课。数据结构这门课大家都说是我们专业课中的重中之重。怀着敬畏的心情,我们开始了数据结构的学习。转眼,一个学期已经结束了,期末了。还没明白过来的我,不得不做个总结了。

一、学习内容总结

第一章交代了该学科的相关概念,如数据、数据元素、数据类型以及数据结构的定义。其中,数据结构包括逻辑结构、存储结构和运算集合。逻辑结构分为四类:集合型、线性、树形和图形结构,数据元素的存储结构分为:顺序存储、链接存储、索引存储和散列存储四类。然后,介绍了一些常用的数据运算。最后着重介绍了算法性能分析,包括算法的时间性能分析和算法的空间性能分析。这一章我还是听懂了:本章中我对数据和数据结构的概念理解较为透彻,熟悉数据结构的逻辑结构和存储结构。而对算法的时间、空间性能分析较为模糊,尤其是时间性能分析需要加强。

第二章具体地介绍了顺序表的概念、基本运算及其三个应用(查找问题、排序问题以及字符处理问题)。基本运算有:初始化表、求表长、排序、元素的查找、插入及删除等。元素查找方法有:简单顺序查找、二分查找和分块查找。排序方法有:直接插入排序、希尔排序、冒泡排序、快速排序、直接选择排序及归并排序等。最后介绍了有关顺序串的相关知识。在本章中我对于顺序表的概念及其生成算法理解的还算可以,并且熟悉了简单顺序查找和二分查找,对分块查找掌握的不是很好;排序问题中,由于选择排序和冒泡排序在大一C语言课上已经学习过,经过本次再次学习,掌握的还不错。

第三章介绍了链表的节点结构、静态与动态链表的概念、链表的基本运算(如求表长、插入、查找、删除等)、单链表的建立(头插法和尾插法)以及双向循环链表的定义、结构、功能和基本算法及相关应用。链表中数据元素的存储不一定是连续的,还可以占用任意的、不连续的或连续的物理存储区域。与顺序表相比,链表的插入、删除不需要移动元素,给算法的效率带来较大的提高。单链表是一种简单、常用的数据结构,所以应用单链表来完成多项式的相加、有序表的归并及箱子排序等运算,其时间性能较好。双向循环链表的插入操作有前插和后插之分。其操作过程较单链表复杂、灵活,理解起来较为困难。

第四章介绍了堆栈及其相关应用。栈是一种运算受的线性结构。其基本运算方法与顺序表和链表运算方法基本相同,不同的是堆栈须遵循“先进后出”的规则,其插入和删除操作都在在栈顶进行。顺序存储和链接存储的栈分别被称为顺序栈和链栈,不同的存储结构也决定了各种运算实现的方法不同。书本中列出了两种结构的相应算法,如入栈、出栈等。本章重点介绍了栈的一些基本应用。栈作为一类重要的数据结构,被广泛应用于各种程序设计上。

第五章介绍了队列的逻辑结构、存储结构及基本运算,在此基础上介绍了队列的一些基本应用。队列是一种运算受的线性结构。遵守“先进先出”的规则,其插入在队尾、删除在队头。顺序存储和链接存储的队列分别被称为顺序队列和链队列。同时也为了节省存储空间,于不断有出队运算,使得顺序队列出现了“假溢出”现象,为避免这种现象的发生,我们提出了循环队列的概念。最后本章介绍了关于基数排序的问题,属于队列的典型应用 。

第六章在介绍数组的概念和存储方法的基础上,重点介绍了特殊矩阵的存储及应用和广义表的相关概念。其中,特殊矩阵包括对称矩阵、三角矩阵、对角矩阵和稀疏矩阵,教材中分别详细介绍了它们的存储结构。稀疏矩阵的应用包括转置和加法运算等。最后介绍了广义表的相关概念和存储结构以及它的应用,课本中举了m元多项式的表示问题。尽管广义表是线性表的一种推广,但其不是线性表。

第七章二叉树的知识是重点内容。在介绍有关概念时,提到了二叉树的性质以及两种特殊的二叉树:完全二叉树和满二叉树。接着介绍二叉树的两种存储结构:顺序存储和链接存储。二叉树的遍历算法(递归算法、先序、中序和后序遍历非递归算法)和线索二叉树算法。二叉树中叶子节点个数统计,二叉树的深度计算等,这些是本章学习的要点。在此基础上教材列出了有关二叉树应用的问题:如表达式求值、哈弗曼树和哈弗曼编码问题、二叉排序树和堆排序等问题,在学习是较难掌握。

第八章教材介绍了树和森林的概念、遍历和存储结构,还有树、森林和二叉树的相互关系,树或森林怎样转化成二叉树,二叉树又如何转换为树和森林等算法。森林是树的集合。任何一个森林或一棵树可以唯一的对应到一棵二叉树上。树的常用存储结构包括双亲表示法、孩子表示法和孩子兄弟表示法。本章还介绍了树的一种典型应用——B树,B树是一种平衡的多路查找树。

第九章的主要知识点有:散列结构的概念及其存储结构、散列函数、两种冲突处理方法、线性探测散列和链地址散列的基本算法以及散列结构的查找性能分析。散列表是一种非常特殊的数据结构,表中各元素之间没有直接的关系,散列和冲突处理是散列法中最重要的两个概念。散列通过某种函数确定节点关键字与节点存储地址之间的关系。常用的散列函数有直接定址法、除留余数法、数字分析法、平方取中法和折叠法等。由于散列法的自身特点,冲突的发生是不可避免的。

第十章介绍了图的概念及其应用,是教材的难点。图的存储结构的知识点有:邻接矩阵、邻接表、逆邻接表、十字链表和邻接多重表。图的遍历包括图的深度优先搜索遍历和广度优先搜索遍历。其余知识点有:有向图、连通图、生成树和森林、最短路径问题和有向无环图及其应用。有向无环图重点理解AOV网和拓扑排序及其算法。

二、学习体会

要我说学习体会,我真的很不好意思。原因不言而喻,我真的没有学好。原因不过于——课前没有做好预习,上课没有认真听,课后没有好好复习。无论我们学习什么课程,概念永远是基础,所有的知识都是建立在基础概念之上的。我们要将概念熟记于心,然后构建知识框架。数据结构包括线性结构、树形结构、图状结构或网状结构。线性结构包括线性表、栈、队列、串、数组、广义表等,栈和队列是操作受限的线性表,串的数据对象约束为字符集,数组和广义表是对线性表的扩展:表中的数据元素本身也是一个数据结构。除了线性表以外,栈是重点,因为栈和递归紧密相连,递归是程序设计中很重要的一种工具。树状结构中的重点自然是二叉树和哈弗曼树了。对于二叉树的很多操作都是基于对二叉树的遍历,掌握了如何遍历,很多问题也就迎刃而解了,比如对二叉树结点的查找访问、统计二叉树中叶子结点的数目、求二叉树的深度等。哈弗曼编码也有着很广泛的应用。对于图状结构,主要学习图的存储结构及图的遍历。对算法的学习是学习数据结构的关键。要注重对算法的掌握。对于一个算法,如果我们不是很理解的话,可以手动将算法走一遍,慢慢理解该算法的思想。学习这门课程的最终目的,还是要学会如何设计算法,这需要我们长期的练习和思考。

三、教学建议

1、的上课还是挺不错的,没学好的原因主要在我。

2、希望老师有时候能够稍微讲慢一点,有时候问个问题,下面没人说话,不是因为都懂了,而是很多人都不懂。

3、希望老师批改试卷的时候能够放宽一点,本来学的就不太好,要是老师改的再严,我肯定就挂了

以上是我对《数据结构与算法》这门课程所作的课程总结。虽然这门课程结束了,但是,我还有很多内容没有掌握牢固,我会继续努力的。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- gamedaodao.com 版权所有 湘ICP备2022005869号-6

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务