数据结构实验心得(精选7篇)

数据结构实验心得(精选7篇)

ID:3823726

时间:2023-09-29 01:23:02

上传者:念青松 数据结构实验心得(精选7篇)

在日常的学习、工作、生活中,肯定对各类范文都很熟悉吧。写范文的时候需要注意什么呢?有哪些格式需要注意呢?以下是我为大家搜集的优质范文,仅供参考,一起来看看吧

数据结构实验心得篇一

通过这次课程设计使我进一步达到理论与实际相结合,提高了自己组织数据及编写程序的能力,使我们能够根据问题要求和数据对象的特性,学会数据组织的方法,把现实世界中的实际问题在计算机内部表示出来并用软件解决问题,培养良好的程序设计技能,掌握设计程序的思路,学会用计算机语言编写程序,以实现所需处理的任务,锻炼自己的动脑能力,学会用自己的思路解决现实中的实际问题,虽然一开始也走了一些弯路不过在同学和老师的'点拨下完成了该程序,这次课程设计中遇到了很多问题,一开始准备用二维数组存放的可考虑到同一个学校同一个项目有好几个人参加,就不能用二维数组了,如果每个学校都申请一个二维数组也非常不方便,还是用顺序表方便也不浪费空间,在这次课程设计的过程中虽然很多次都参照了课本及资料,不过这使我更加熟悉了顺序表以及结构体的定义及实现,调试过程中也遇到了一些问题也都是自己独立思考完成的,还有一个体会是,遇到不会的地方可以参考课本也可以去图书馆或网上查资料,当然主要思路有了也就简单点了。在老师的答辩指指导下,程序数组那块程序的书写老师问我为什么是那样的,当时写这块程序的时候是看书上数组那块程序再加上自己的主观想法觉得就是这样写的,虽然这块程序当时那种主观想法是写对了,但是经过老师的答辩提问才知道虽然是写对了,但是这种思考和想法是错误不科学的,真正的是因为第2次循环是因为第一次释放了一个。所以通过这次课程设计让我懂得了一个很重要的道理,就是以后如果哪地方有一点迷惑,有一点不懂的地方不能凭自己主观的思考和想法觉得应该是这样的,一定要找老师问清楚为什么是这样的,一定要把每步每个小程序都要搞的十分的清楚,这真是个很好的收获。还有就是这个程序的男女问题上,开始准备在结构体中加一个sex的点,大使那样对与男女项目还是有点麻烦,后来在同学的提醒下,通过参赛项目号就可以解决了,比m大就是女子项目,比m小或者等于m就是男子项目。这样就可以很完美地解决这个问题了。

其实,当你实验遇到问题时,自己会通过很多途径去解决它,没有解决时,心急如焚,解决之后的那种快感是前所未有的,这也许就是付出了行动之后的收获吧!

这也教会了我们以后在社会上,遇见了事情不可怕,只要不被困难击倒,解决了它,那样我们就是胜利的!

xxx

数据结构实验心得篇二

数据结构作为计算机科学中的重要基础课程,提供了一种组织和管理数据的方式,对编程和算法的学习有着深远的影响。在数据结构理论课的学习过程中,我深刻体会到了不同数据结构的特点和应用,并培养了提高问题解决能力的思维模式。以下是我对这门课程的心得体会。

第一段:课程介绍与作用

在数据结构理论课上,我们首先介绍了数据结构的基本概念和分类。通过学习不同的数据结构,我们能够理解每种数据结构的特点和适用范围。数据结构是程序设计的基础,它提供了一种合理组织和管理数据的方式,能够提高程序的效率和质量。在实际应用中,我们可以根据问题的特点选择合适的数据结构,从而提高程序的性能和可扩展性。

第二段:常用数据结构的学习与应用

课程中,我们学习了常用的数据结构,如数组、链表、栈、队列、树以及图等。了解这些基本数据结构的特点和操作,对于理解和实现算法非常重要。通过学习这些数据结构,我能够以更高效的方式解决问题。例如,当需要按照先进先出的顺序处理数据时,我可以选择使用队列来实现;而当需要按照某种特定规则搜索数据时,我可以使用树来组织数据。

第三段:复杂数据结构的深入研究

除了基本的数据结构之外,课程还介绍了一些复杂的数据结构,如二叉树、红黑树、堆、哈希表等。这些数据结构能够更好地解决一些特定的问题,同时具有高效的插入、删除和搜索操作。通过深入研究这些复杂的数据结构,我可以更好地应用它们解决实际问题。例如,我可以使用红黑树来实现一个高效的字典,通过哈希表来实现一个高效的缓存等。

第四段:算法与数据结构的结合应用

在数据结构理论课中,我们还学习了与数据结构相关的算法,如排序算法、搜索算法、图算法等。这些算法能够更好地利用数据结构,提高程序的效率和性能。通过学习这些算法,我能够根据问题的特点选择合适的算法,并结合合适的数据结构来解决问题。例如,当需要对一组数据进行排序时,我可以选择使用快速排序或归并排序算法。

第五段:对问题的分析与解决能力的培养

数据结构理论课上不仅仅是对不同数据结构和算法的学习,更重要的是培养了我们对问题的分析与解决能力。通过学习数据结构和算法,我们能够更好地理解问题的本质,分析问题的特点和要求,从而提出更有效的解决方案。这样的思维方式对于编程和算法的学习有着重要的影响,并且能够在实际应用中帮助我们更好地解决问题。

综上所述,数据结构理论课为我们提供了一种组织和管理数据的方式,并培养了我们对问题的分析与解决能力。通过学习不同的数据结构和算法,我们能够更高效地解决问题,并提高程序的效率和质量。在未来的学习和工作中,我将继续深入研究数据结构和算法,不断提高自己的编程技能和问题解决能力。

数据结构实验心得篇三

这学期开始两周时间是我们自己选题上机的时间,这学期开始两周时间是我们自己选题上机的时间,虽然上机时间只有短短两个星期但从中确实学到了不少知识。上机时间只有短短两个星期但从中确实学到了不少知识。数据结构可以说是计算机里一门基础课程,据结构可以说是计算机里一门基础课程,但我觉得我们一低计算机里一门基础课程定要把基础学扎实,定要把基础学扎实,然而这次短短的上机帮我又重新巩固了c语言知识,让我的水平又一部的提高。数据结构这是一门语言知识让我的水平又一部的提高。数据结构这是一门知识,纯属于设计的科目,它需用把理论变为上机调试。

纯属于设计的科目,它需用把理论变为上机调试。它对我们来说具有一定的难度。它是其它编程语言的一门基本学科。来说具有一定的难度。它是其它编程语言的一门基本学科。我选的.上机题目是交叉合并两个链表,对这个题目,我选的上机题目是交叉合并两个链表,对这个题目,我觉得很基础。刚开始调试代码的时候有时就是一个很小的错觉得很基础。刚开始调试代码的时候有时就是一个很小的错调试代码的时候误,导致整个程序不能运行,然而开始的我还没从暑假的状导致整个程序不能运行,态转到学习上,每当程序错误时我都非常焦躁,态转到学习上,每当程序错误时我都非常焦躁,甚至想到了放弃,但我最终找到了状态,一步一步慢慢来,放弃,但我最终找到了状态,一步一步慢慢来,经过无数次的检查程序错误的原因后慢慢懂得了耐心是一个人成功的必然具备的条件!

同时,通过此次课程设计使我了解到,必然具备的条件!同时,通过此次课程设计使我了解到,硬件语言必不可缺少,要想成为一个有能力的人,必须懂得件语言必不可缺少,要想成为一个有能力的人,硬件基础语言。在这次课程设计中,硬件基础语言。在这次课程设计中,虽然不会成功的编写一个完整的程序,但是在看程序的过程中,个完整的程序,但是在看程序的过程中,不断的上网查资料以及翻阅相关书籍,通过不断的模索,测试,发现问题,以及翻阅相关书籍,通过不断的模索,测试,发现问题,解决问题和在老师的帮助下一步一步慢慢的正确运行程序,决问题和在老师的帮助下一步一步慢慢的正确运行程序,终于完成了这次课程设计,于完成了这次课程设计,虽然这次课程设计结束了但是总觉得自已懂得的知识很是不足,学无止境,得自已懂得的知识很是不足,学无止境,以后还会更加的努力深入的学习。力深入的学习。

数据结构实验心得篇四

一、课程基本概况

课程名称:数据结构

课程名称(英文): data structures

课程编号:b09042

课程总学时:60(其中,讲课48,实验12)

课程学分:3

课程分类:专业选修课

开设学期:4

适用专业:计算机网络工程本科

先修课程:集合论,图论,高级语言(结构或记录,指针)

后续课程:数据库,编译原理,操作系统等

二、课程的性质、目的和任务

数据结构是计算机专业的一门核心专业课程,是软件课程中非常重要的一门课程,在整个专业教学中占有十分重要的地位,是一门理论性非常强的课程。通过课堂教学、课外练习和上机实习,使学生了解数据对象的特性,数据组织的基本方法,并初步具备分析和解决现实世界问题在计算机中如何表示和处理的能力以及培养良好的程序设计技能,为后续课程的学习和科研工作的参与打下良好的基础。

三、主要内容、重点及深度

本门课程共60学时,其中理论教学48学时,实验教学12学时。其中,理论教学部分:

第一章

绪论

(一)目的要求

了解数据结构的意义与发展过程、数据结构在计算机科学中的作用、学习本课程的目的、任务及要求。理解数据结构的基本概念;算法设计;掌握算法的时间和空间复杂度。

(二)教学内容 本章知识点:

1.相关的基本概念(掌握);

2.算法五大要素(掌握);

3.计算语句频度和估算算法时间复杂度的方法(掌握)。

(三)重点与难点

重点:数据结构的定义;算法的描述方法。

难点:数据结构的定义;算法与程序的区别;时间复杂度及其计算。

第二章

线性表

(一)目的要求

掌握线性表的逻辑结构;线性表的存储结构及操作的实现;理解一元多项式的表示;

(二)教学内容 本章知识点:

1.线性表的逻辑结构(掌握);2.线性表的存储结构(掌握);

3.线性表在顺序结构和链式结构上实现基本操作的方法(掌握);

4.从时间和空间复杂度的角度比较线性表两种存储结构的不同特点及其适用场合(掌握)。

(三)重点与难点

重点:线性表的概念;线性表的顺序存储结构、链式存储结构及其常用算法。难点:链式存储结构及其常用算法;双向循环链表。

第三章 栈和队列

(一)目的要求

掌握栈的定义,表示及实现;表达式求值;栈与递归过程;队列的定义、表示及实现。

(二)教学内容 本章知识点: 1.栈和队列的特点(掌握);

2.在两种存储结构上栈的基本操作的实现(掌握); 3.循环队列和链队列的基本运算(熟练掌握); 4.递归算法执行过程中栈状态的变化过程(掌握)。

(三)重点与难点

重点:堆栈和队列的概念;递归的定义;循环队列和链队列的基本运算。难点:递归的编程实现;循环队列和链队列的基本运算。

第四章 串

(一)目的要求

了解串的逻辑结构,存储结构;掌握串操作的实现(重点难点bf和kmp算法)串的应用。

(二)教学内容 本章知识点:

1.串的七种基本运算的定义(了解);

算法,熟悉next函数和改进next函数的定义和计算(掌握); 5.串名的存储映象和在堆存储结构实现串操作的方法(理解)。

(三)重点与难点 重点:串定义和存储方法;串的操作 难点:串操作实现方法

第五章 数组和广义表

(一)目的要求

掌握数组的存储结构;稀疏矩阵的表示及操作的实现;广义表的定义和存储结构;广义表的递归算法。

4.广义表的定义及其存储结构,学会广义表的表头,表尾分析方法(掌握); 5.学习编制广义表的递归算法(掌握)。

(三)重点与难点

重点:多维数组元素存储地址的计算;稀疏矩阵的三元组表示;广义表的存储定义、操作。难点:稀疏矩阵的三元组表示;广义表的存储定义、操作。

第六章 树和二叉树

(一)目的要求

(二)教学内容 本章知识点: 1.二叉树的结构特点(理解);

7.建立最优二叉树和哈夫曼编码的方法(掌握)。

(三)重点与难点 重点:二叉树的概念、性质;二叉树的遍历方式;构造二叉排序树。难点:二叉树的遍历方式;二叉排序树的构造方法;二叉树的线索化。

第七章 图

(一)目的要求

理解图的基本概念;图的存储结构;掌握图的遍历及应用{最小生成树,最短路径等};拓扑排序和关键路径。

(二)教学内容 本章知识点: 1.熟悉图的各种存储结构;

4.应用图的遍历算法求各种简单路径问题(比如,最小生成树、最短路径、拓扑排序、关键路径等)(掌握)。

(三)重点与难点

重点:图的存储结构;图的遍历 难点:图遍历的算法;

第八章

动态存储管理

(一)目的要求

了解边界标识法和伙伴系统;无用单元收集和紧缩;

(二)教学内容 本章知识点:

1.存储器分配策略和算法(了解);

2.无用单元收集时的标志算法(了解)。

(三)重点与难点

存储器分配策略和算法、无用单元收集时的标志算法

第九章

查找

(一)目的要求

(二)教学内容 本章知识点:

1.顺序查找、折半查找和索引查找的方法、应用(掌握);

2.二叉排序树的构造方法(掌握);

3.二叉平衡树的建立方法(掌握);

4.b-树,b+树和键树的特点以及它们的建立过程(理解);

5.哈希表的构造方法(掌握);

6.按定义计算各种查找方法在等概率情况下查找成功时和失败时的平均查找长度;

7.哈希表在查找不成功时的平均查找长度的计算方法(掌握)。

(三)重点与难点

重点:二叉排序树的构造方法、二叉平衡树的建立方法;哈希表的构造、应用;

难点:二叉排序树的构造及应用;哈希表的构造方法;查找的平均长度。

第十章

内部排序

(一)目的要求

掌握插入排序、交换排序(起泡排序,快速排序)、选择排序(简单选择,树形选择,堆)、归并排序、基数排序等算法。

(二)教学内容 本章知识点:

1.各种排序方法的特点并能灵活应用(掌握); 2.各种方法的排序过程(掌握);

3.各种排序方法的时间复杂度分析(掌握)。

(三)重点与难点

重点:各种排序方法的特点及其应用;实现排序的各种算法。难点:各种排序算法的时间复杂度分析。

十一章

外部排序

(一)目的要求

理解外部排序的基本方法;掌握败者树和多路平衡归并的实现;置换--选择排序;最佳归并树。

(二)教学内容 本章知识点:

1.外部排序的两个过程(理解);

2.外排过程中所需进行外存读/写次数的计算方法(掌握);

3.败者树的建立过程(掌握);

4.实现多路归并的算法(掌握);

5.置换-选择排序的过程(掌握);

6.最佳归并树的构造方法(熟悉);

7.按最佳归并树的归并方案进行平衡归并时,外存读/写次数的计算方法(掌握)。

(三)重点与难点

重点:外部排序过程和实现方法;多路并归算法及其实现; 难点:最佳并归树的构造方法及其应用。

实践教学部分:上机实验分4个专题,每个专题可提供2~4个难度不等的题目供选。

实验一

停车场管理系统

(一)实验内容 以栈模拟车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。栈以顺序结构实现,队列以链表结构实现。

(二)实验过程 编程实现实验内容。

(三)实验教学基本要求

通过实例,使学生掌握栈和队列两种特殊的线性结构,掌握栈和队列的特点。实验后学生提交实验报告。

(四)实验设备和材料 计算机。

(五)实验学时 4学时

实验二

教学计划编制问题

(一)实验内容

假设任何专业都有固定的学习年限,每学年含两学期,每学期的时间长度和学分上限值均相等。每个专业开设的课程都是确定的,而且课程在开设时间的安排必须满足先修关系。每门课程有哪些先修课程是确定的,可以有任意多门,也可以没有。每门课恰好占一个学期。编制一个教学计划程序。

(二)实验过程编程实现实验内容。

(三)实验教学基本要求

通过实例,使学生熟悉图的各种存储结构的特性,掌握如何应用图结构解决具体问题。实验后学生提交实验报告。

(四)实验设备和材料 计算机。

(五)实验学时 2学时

实验三

最小生成树问题

(一)实验内容

利用克鲁斯卡尔算法求最小生成树。以文本形式输出树中各条边以及他们的权值。

(二)实验过程 编程实现实验内容

(三)实验教学基本要求

通过实例,使学生熟悉图的各种存储结构的特性,掌握如何应用图结构解决具体问题。实验后学生提交实验报告。

(四)实验设备和材料 计算机。

(五)实验学时 2学时

实验四

哈希表设计

(一)实验内容

假设人名为中国人的汉语拼音形式。待填入哈希表的人名共有30个,取平均查找长度的上限为2。哈希函数用除留余数法构造,用伪随机探测再散列法处理冲突。

(二)实验过程 编程实现实验内容

(三)实验教学基本要求 掌握索引技术的使用。

(四)实验设备和材料 计算机

(五)实验学时 4学时

五、课程教学的基本要求和主要环节

本课程可采用课堂讲授、课堂讨论、习题课等进行课堂教学;条件允许可采用cai、电子教案、幻灯片、参观等进行辅助教学;每章布置3~6道习题以巩固教学;在课程后半程,安排3~4个上机实验,让学生应用数据结构的理论、方法,分组设计几个较大的软件,使理论与实际相结合。

考试采用闭卷方式。总成绩由平时成绩和考试成绩组成。平时成绩占30%,考试成绩占70%。

六、本课程与其它课程的联系与分工

先修课包括:集合论,图论,高级语言(结构或记录,指针);

后续课包括:数据库,编译原理,操作系统等。

七、建议教材与参考教材

《数据结构》(c语言版)

严蔚敏等

清华大学出版社

1997 《数据结构题集》

严蔚敏等

清华大学出版社

1999

《数据结构习题与解析》

李春葆

清华大学出版社

2004

八、负责人

撰稿人:刘景汇、李玉香

审稿人:

系(院)领导:

数据结构实验心得篇五

计算机数据结构是计算机科学中非常重要的一部分知识,它点亮了如今互联网信息时代的每一个角落。在我学习计算机数据结构之前,我对这个课程印象模糊。但在学习过程中,我深刻认识到,数据结构不仅是一种数据组织和存储方式,而且对代码实现和算法优化也有很大的影响。在本文中,我将分享我的计算机数据结构心得体会。

第二段:知识体系和分类

计算机数据结构是指数据组织和存储的方式。根据不同的特点和需求,数据结构可以分成线性结构、树形结构、图形结构等不同种类。常用的线性结构包含数组、链表、队列、栈等,而树形结构中常见的有二叉树、霍夫曼树等,图形结构中常用的则是邻接表、邻接矩阵等。学习计算机数据结构时,我们需要掌握各种数据结构之间的联系,并能在实际问题中选择合适的数据结构。

第三段:实现方法

在学习计算机数据结构时,除了理论知识,学习实现方法也很重要。数据结构的实现方法包括顺序存储和链式存储,不同的实现方法对代码和算法的优化都有显著的影响。顺序存储通常用来保存连续的大块数据,比如数组;而链式存储则通过指针连接各个节点,适用于大型数据的存储。学习实现方法不仅让我们能深入理解数据结构,也能提高我们的思考能力和程序设计能力。

第四段:算法优化

数据结构和算法是解决计算机问题的两个关键要素。在编写算法时,合理选择数据结构能够提高算法效率。例如,在搜索算法中,二分查找和顺序查找所使用的数据结构是数组和链表,但二分查找的效率远高于顺序查找。更进一步,对于同一数据结构,我们还可以优化算法,例如使用归并排序而不是快速排序,从而提高程序的性能。

第五段:总结

计算机数据结构是计算机科学中重要的基础知识,我们需要认真学习和掌握,才能更好地应用于实际问题中。学习数据结构既需要理解基本概念和分类,也需要掌握实现方法和算法优化。如果我们能在学习中不断总结经验和提高能力,相信我们能够在未来的工作和学习中处于更好的位置。

数据结构实验心得篇六

计算机数据结构是指在计算机科学中用于组织和存储数据的方法。在计算机科学和编程中,数据结构是实现算法的基础,它能够提高程序的效率和可读性。在学习计算机科学的过程中,计算机数据结构是一个必要的基础课程。在本文中,将会分享笔者学习计算机数据结构的心得体会,总结计算机数据结构的重要性,以及如何更好的学习这门课程。

第二段:学习心得

在课程学习的过程中,我想说的第一件事就是计算机数据结构是充满挑战的。在学习过程中,我们需要学习各种数据结构如链表、堆栈、队列、树、图等等。这些数据结构看起来相似,但在实际应用中不能随意混用,每个数据结构都有其独特的使用方法。在学习这门课程时,我更加深刻地认识到计算机数据结构对计算机科学中算法实现的重要性。

第三段:重要性

计算机数据结构在计算机科学的应用中非常重要,它能够增强计算机程序的执行效率和可读性。通过使用合适的数据结构,可以使代码更易于理解和维护。例如,使用链表可以快速添加和删除元素,而使用数组则能快速访问元素。因此,学习计算机数据结构可以让我们更好地理解数据的存储方式和查找方法,从而更好地编写程序。

第四段:优化方法

在学习计算机数据结构时,我发现实践是一种很好的学习方法。除了理论课程,我们还应该运用所学的知识来解决实际问题,这样有助于我们更好地理解数据结构的使用和实际应用。此外,合理地使用数据结构的注释也很重要,注释可以让代码更加清晰易懂,也可以帮助我们在处理问题时更快捷地找到所需的数据结构。

第五段:总结

在本文中,我们分享了关于计算机数据结构的心得体会。学习计算机数据结构不仅仅局限于课本上的理论知识,它也需要我们运用所学的知识来解决实际问题。计算机数据结构可以帮助我们更好地理解数据的储存方式和查找方法,从而更好地编写程序。我相信,在使用实践学习的方法下,大家都能更好地理解和应用计算机数据结构。

数据结构实验心得篇七

本学期开设的《数据结构与算法》课程已经告一段落,现就其知识点及其掌握情况、学习体会以及对该门课程的教学建议等方面进行学习总结。

一、《数据结构与算法》知识点

第一章是这门学科的基础章节,从整体方面介绍了“数据结构和算法”,同时引入相关的学术概念和术语,如数据、数据元素、数据类型以及数据结构的定义。重点是数据结构的括逻辑结构、存储结构和运算集合的含义及其相互联系。数据结构和两大逻辑结构的4四种常用存储方法;逻辑结构分为四类:集合型、线性、树形和图形结构,数据元素的存储结构分为:顺序存储、链接存储、索引存储和散列存储四类。难点是算法复杂度的分析方法和性能的分析。

第二章详细地分析了顺序表。介绍了顺序表的相关概念及其有关运算。基本运算有:初始化表、求表长、排序、元素的查找、插入及删除等。元素查找方法有:简单顺序查找、二分查找和分块查找。排序方法有:直接插入排序、希尔排序、冒泡排序、快速排序、直接选择排序及归并排序等,在各种算法思想的先分析后,要弄清各种算法的时间复杂度与空间性能的优点和缺点,在什么特定的场合适合哪种算法思想。最后介绍了顺序串的概念,顺序串是顺序表的一个特例;区别在于组成顺序串的数据元素是一组字符,其重点在于串的模式匹配。

第三章介绍链表。链表中数据元素的存储不一定是连续的,还可以占用任意的、不连续的物理存储区域。与顺序表相比,链表的插入、删除不需要移动元素,给算法的效率带来较大的提高,且在存储空间上有动态申请的优点。这一章中介绍了链表的节点结构、静态与动态链表的概念、链表的基本运算(如求表长、插入、查找、删除等)、单链表的建立(头插法和尾插法)以及双向循环链表的定义、结构、功能和基本算法。弄清其个运算的算法思想及其时间复杂度和空间性能。最后介绍了链表之中存储结构在实际中的相关应用。

第四章,堆栈是运算受限制的线性结构。其基本运算方法与顺序表和链表运算方法基本相同,不同的是堆栈须遵循“先进后出”的规则,对堆栈的操作只能在栈顶进行;堆栈在文字处理,匹配问题和算术表达式的求值问题方面的应用。

第五章,队列是一种够类似堆栈的线性结构。其基本运算方法与顺序表和链表运算方法基本相同,不同的是堆栈须遵循“先进先出”的规则,对堆栈的操作只能在栈顶进行;其运算有入队、出队等操作。在介绍队列时,提出了循环队列的概念,以避免“假溢出”的现象。

第六章介绍了特殊矩阵和广义表的概念与应用。其中,特殊矩阵包括对称矩阵、三角矩阵、对角矩阵和稀疏矩阵,书中分别详细介绍了它们的存储结构。其中三元组和十字链表这两种结构尤为重要;对着两种结构的建立了应用要掌握。稀疏矩阵的应用包括转置和加法运算等。最后介绍了广义表的相关概念及存储结构,关于它的应用,课本中举了m元多项式的表示问题。

第七章二叉树的知识是重点内容。在介绍有关概念时,提到了二叉树的性质以及两种特殊的二叉树:完全二叉树和满二叉树。接着介绍二叉树的顺序存储和链接存储以及生成算法。重点介绍二叉树的遍历算法(递归算法、先序、中序和后序遍历非递归算法)和线索二叉树。二叉树的应用:基本算法、哈弗曼树、二叉排序树和堆排序,其中关于二叉排序树和哈弗曼书的构建是重点。

第八章介绍了树。树与二叉树是不同的概念。教材介绍了树和森林的概念、遍历和存储结构,还有树、森林和二叉树的相互关系,树或森林怎样转化成二叉树,二叉树又如何转换为树和森林等算法。

第九章,散列结构是一种查找效率很高的一种数据结构。本章的主要知识点有:散列结

构的概念及其存储结构、散列函数、两种冲突处理方法、线性探测散列和链地址散列的基本算法以及散列结构的查找性能分析。

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

二、对各知识点的掌握情况

总体来看,对教材中的知识点理解较为完善,但各个章节均出现有个别知识点较为陌生的现象,对某些具体的问题和应用仍有一些模糊与措手。各个章节出现的知识点理解和掌握情况明确一下。

第一章中我对数据和数据结构的概念理解较为透彻,熟悉数据结构的逻辑结构和存储结构。算法的时间、空间性能分析是重点,同样也是难点,尤其是空间性能分析需要加强。在某些强大与复杂的算法面前的处理有些棘手。

第二章,顺序表的概念、生成算法理解较为清晰,并且熟悉简单顺序查找和二分查找,对分块查找较为含糊。删除方面的问题比较容易些。排序问题中,由于冒泡排序在大一c语言课上已经学习过,再来学习感觉相对轻松些。对插入排序和选择排序理解良好,但是,在实际运用中仍然出现明显不熟练的现象。由于在归并排序学习中感觉较吃力,现在对这种排序方法仍然非常模糊,所以需要花较多的时间来补习。此外串的模式匹配也是较难理解的一个地方。

第三章链表中,除对双向循环链表这一知识点理解困难之外,在对链表进行插入删除和排序相关操作上同顺序表的操作基本相当。其他的知识点像单链表的建立和基本算法等都较为熟悉。

第四章和第五章有关堆栈以及队列的知识点比较少,除有关算法较为特殊以外,其余算法都是先前学过的顺序表和链表的知识,加上思想上较为重视,因此这部分内容是我对全书掌握最好的一部分。在一些实际问题的应用与处理方面,对其进行存储结构的选择还是需要认真考虑的。在算法的时间复杂度和空间性能的分析仍有些困难。

第六章的学习感觉较为困难的部分在于矩阵的应用上。在矩阵的存储结构中,使用三元组表发相对较为简单,而使用十字链表就有些困难了。但在某些问题的处理上又必须或从节省空间考虑采用十字链表来处理,想矩阵的加法运算。广义表的定义还是比较容易理解的,其存储结构也不难掌握,关于应用也只局限于在多项式的表示上。

第七章是全书的重点。在这一章中概念和定义都很多,有些很昏人但都很重要,要区分开来。二叉树的性质容易懂却很难记忆。对二叉树的存储结构和遍历算法这部分内容掌握较好,能够熟练运用。关于二叉排序树和的哈弗曼树却相对有些压力,其生成和对其关键字的插入和删除时重点。

第八章关于树的分析,首先要明确树和二叉树的区别,以及书中的相关定义和概念。关于二叉树、树和森林之间的转换和遍历方法是重点,但不算是难。接着就是数的存储结构的选择及转化为二叉树的算法,这部分有些吃力。再就介绍了特殊的树-b树,关于对b树的操作,插入关键字是中带领和难点。

第九章散列结构这一章理解比较完善的知识点有:基本概念和存储结构。散列函数中直接定址法和除留余数法学得比较扎实,对数字分析法等方法则感觉较为陌生。对两种冲突处理的算法思想的理解良好,问题在于用c语言描述上。

在学习开始,王教授就明确提出它不是一种计算机语言,不会介绍新的关键词,而是通过学习可以设计出良好的算法,高效地组织数据。一个程序无论采用何种语言,其基本算法思想不会改变。联系到在大一和大二上学期学习的c和c++语言,我深刻认识到了这一点。“软件开发好比写作文,计算机语言提供了许多华丽的辞藻,而数据结构则考虑如何将这些辞藻组织成一篇优秀的文章来。”在学习这门课中,要熟悉对算法思想的一些描述手段,包括文字描述、图形描述和计算机语言描述等。因此,计算机语言基础是必须的,因为它提供了一种重要的算法思想描述手段——机器可识别的描述。

这门课结束之后,我总结了学习中遇到的一些问题,最为突出的,书本上的知识与老师的讲解都比较容易理解,但是当自己采用刚学的知识点编写程序时却感到十分棘手,有时表现在想不到适合题意的算法,有时表现在算法想出来后,只能将书本上原有的程序段誊写到自己的程序中再加以必要的连接以完成程序的编写。针对这一情况,我会严格要求自己,熟练掌握算法思想,尽量独立完成程序的编写与修改工作,只有这样,才能够提高运用知识,解决问题的能力。

四、对《数据结构与算法》课程教学的建议

1、建议在上课过程中加大随堂练习的分量,以便学生能当堂消化课堂上学习的知识,也便于及时了解学生对知识点的掌握情况,同时有助于学生保持良好的精神状态。

2、建议在课时允许的情况下,增加习题课的分量,通过课堂的习题讲解,加深对知识点的掌握,同时对各知识点的运用有一个更为直观和具体的认识。

以上便是我对《数据结构与算法》这门课的学习总结,我会抓紧时间将没有吃透的知识点补齐。今后我仍然会继续学习,克服学习中遇到的难关,在打牢基础的前提下向更深入的层面迈进!

关闭