2016级数据结构课程期末总结

来源:互联网 发布:网络强制信息安全认证 编辑:程序博客网 时间:2024/06/01 23:31

 

    在贺老师带领的翻转课堂模式下我们已经过了一整个学期,从开始的手忙脚乱看视频到最后慢慢的成了习惯。数据结构是计算机专业比较重要的一门专业课,在课本第一章的目录中就提到了 数据结构+算法=程序,其中许多的存储结构和逻辑结构以及算法都值得我们好好学习和揣摩其中的精髓。

          O:    回顾这一个学期所学的知识,我们学到了很多数据存储类型和运算方法。数据的逻辑结构包括线性结构和非线性结构,数据                          的存储结构包括顺序结构、链式结构、索引结构、散列结构,其中我们在课堂上重点学习了前两种,数据结构的运算有最基本的                    增删改查和最后学到的好几种排序。

            1.   第二章线性表包括了顺序表和链表,顺序表必须要在使用之前规定它的大小,在内存中开辟一块连续的内存,这个很容易占                           不满而导致内存的浪费,相比较而言,链表在这一方面体现出了比顺序表更优越的性能,链表会随机开辟内存空间,使空间的利                   用率更高,顺序表在插入和删除元素时要在这个元素之后整体进行移动,费时费力,查询时更为简单,而链表在插入和删除元素                   时比较简单,只需要将前一个指针的next域指向后一个元素,释放中间节点即可,因此两种方式各有优点,具体还要看使用的背                   景而定。
            2.   第三章我们学习了栈和队列,栈是先进后出其应用有很多如在word等软件中的撤回操作、网页中的后退按钮等等,队列是先进                     先出,我感觉队列在我们的日常生活中的应用更为 广泛一些,如银行或医院的叫好系统,先来的先取票,后来的要排队。虽然二                   者都是线性结构但是却是完全不同数据类型,主要区别是对插入和删除操作的“限定”,所以它们也被成为受限的线性表结构。

           3.    第四章和第六章讲的是串,串对我们来说不算陌生了,上学期就学过字符串和数组等,从逻辑结构看,串也是一种特殊的线性                       表。串可以看作是每个数据元素只有1个元素组成的线性表。在串的模式匹配算法中,我们在课堂上学习了BF算法和KMP算法。                   BF算法中很多地方是没有必要进行比较的,这样会使得效率在一定程度上降低。

           4.    第五章学习的是递归,递归思想我们在上学期学习C++的时候就接触过了,当时是在学斐波那契数列的时候用到的,现在在学                       递归的时候还是有点懵,但是在纸上多画画走几步就会明白其中的调用原理,在学习到后面的知识后发现递归思想是很好用的,                   但是其复杂度较高,所以会选择复杂度较低而且较为复杂的非递归算法实现。

           5.     第七章学习的是树,在这一章我们学习到了最小二叉树、平衡二叉树、完全二叉树、满二叉树等方法,接触到了双亲节点、左右                   子树等数据结构中关于树的专有名词。其中我们学习到了二叉树的存储结构有顺序存储结构和链式存储结构,其中顺序存储结构                   存在着空间浪费严重的情况,所以我们一般用链式结构存储较多。在二叉树的便利中我印象比较深的是二叉树的先序、中序和后                   续3种便利,初学时真的是一头雾水,尤其是已知2中便利方法,求另外一种的题目一遇到就头疼,后来在慢慢掌握了其中的规                     律,然后在课后上机加以实践,现在遇到这种题最少不头疼了,比之前是一大进步。之后学习到了二叉树和森林之间的相互转换                   以及平衡二叉树的插入节点的4种转化情况,当时这里也是不懂,看视频也不懂,老师带来了扑克牌来模拟二叉树的插入情况,                     从开始的不会排到后来慢慢有了感觉,这可能也是我们学习数据结构的一个过程吧。

         6.       第八章接触到了图的概念如有向图、无向图和带权图等等,主要有图的邻接矩阵和图的邻接表,在经过课程设计后也让我对两种                   存储方式有了更深的理解,在图比较稀疏的时候用邻接表比用邻接矩阵更能节省空间,但是如果是稠密图的话用邻接矩阵会更好                   一些。在最短路径中我们主要学习了2中算法:迪杰斯特拉算法和弗洛伊德算法,迪杰斯特拉算法是一种单源最短路径算法,用                     于计算一个节点到其他所有节点的最短路径,以一个源点为中心向外层扩展直到重点为止。弗洛伊德算法可以计算出任意两个点                   之间的最短路径,尤其是在稠密图时效率会更加高效。我在我的课程设计飞机订票系统中也用到了计算最小路径,我当时将两种                   算法进行比较最终选择了迪杰斯特拉 算法,我认为在课程设计飞机订票系统中要注重时间复杂度,迪杰斯特拉算法的时间复杂度                   为O(n²),弗洛伊德则要高的多为O(n3),两种算法各有优点。

         7.      在课程的最后我们学习到了很多种排序,有希尔排序、冒泡排序、快速排序、选择排序、直接插入排序、堆排序、归并排序、基                   数排序等等,冒泡排序和选择排序上学期我们就已经学过了而且还是期末考试上机的一到原题,网上的排序算法多的惊人,这些                   主流的算法的思想都值得我们去深入研究和学习,将其进行比较来学习是一个不错的方法,对比记忆才能记得更加深刻,其中直                  接插入排序、冒泡排序、归并排序和基数排序都是稳定的排序算法,其余都是不稳定性排序算法,再如平均情况较好的希尔排序                    和基数排序等等,这些都应该在我们的脑子中留有印象。

       R:       这学期的翻转课堂我感觉比之前的传统学习方法更加有效,在课前通过看视频对上课老师要讲的内容做到心中有数,对自己不明                    白和不理解的地方在课上着重听讲,这能让我们加深对所学知识的理解,这比传统课堂下的学习能学的更深刻,而且大学生要具备                  一定的自学能力,这对提高我们的自学能力和控制能力有着极大的帮助。

        I :      我认为本学期学习的单链表、循环链表、堆栈、队列和数组等知识掌握的还可以,对树和图的理解还需要进一步的加深,但我感                    觉这几章正是数据结构的核心所在,是非常重要的而且这些理论在我们的现实生活中随处可见用的极广,后面的排序算法很多,                    关于其算法的平均情况复杂度、是否是稳定排序算法等内容都需要我们去理解去记忆,最后变成一种能力。

        D:     数据结构这门课程对于计算机专业的学生来说是非常重要的,我们学习的不光是其中的算法和知识,更多的是一种思想,一种编                   程思想,这种思想会对我们的编程和以后的学习提供很大的帮助 ,让我们的能力在不断积累和实践中提高,在马上要到来的考试                   周里,还要对最后几章的内容多记忆和理解,虽然数据结构课程结束了,但是我们对它的学习才刚刚开始,我会在以后的学习中                   更加注重这方面的积累,在积累中进步!

原创粉丝点击