数据结构学习方法 《数据结构》是计算机相关专业的一门重要核心基础课,在整个课程体系中 处于承上启下的核心地位,它以《C语言程序设计》和《集合论与图论》为基础。 同时又与这两门课程相互融合,相互渗透,《数据结构》的学习同时又能加深对 前两门课程的深入理解,同时为进 步学习《算法分析与设计》、《软件工程》 《操作系统》、《编译原理》、《数据库理论》等计算机相关专业课程奠定坚实 的理论与实践基础 学习《数据结构》应具备一定的专业理论知识,特别是应先学好《C语言程 序设计》和《集合论和图论》两门课程。 以下就自己多年来讲授数据结构的心得,谈一谈学习方法,希望对大家学习 数据结构有所帮助。 学习方法 一从史佛到强论的学习方法 数据结构是一门从实践抽象到 里论 又用理论来指导实践的学科,因此我们 在学习这门课程的过程中,首先应从实践入手,从日常生活入手,然后再抽象到 理论,下面我们举两个例子来说明这种学习方法。 【列1】图的广度代先博索和深度优先博索宫法 想一想在日常生活中,如果有很多个房间,现在需要我们检查每一个房间中 都放了什么物品,我们会怎么检查? 第一种检查方式,我们先检查离我们最近的房间,为了避免重复,每检查过 一个房间,我们需要标记,然后层层推进,这其实就是广度优先搜索的思想,我 们把这种搜索过程进 步规范, 按算法的规则写出来 就是户 度 先搜索算法 第二种检查方式,我们先从离我们最近的某一个房间检查,同样为了避免重 复,检查完一个房间后我们要作标记,按同样的方式每次都从刚检查过的房间重 新开始,直到走不动时再逐级回退看看是否还存在没有检查过的房间,这是深度 优先搜索的思想 【例2】快速排序算法 假设有一班30个学生上体育课,现在需要对这30个学生从低到高进行排 常,体育老师可以随意洗身高中等的学生,然后让比这个学生高的站在这个学生 右边,比这个学生矮的站在这个学生左边,再对这个学生两边的学生作同样处理 这就是快速排序的思想,同时也是算法中分治的思想,把这种过程规范地描述出 来,就是快速排序算法。 学习方法二先逻辑结构后存储结构的学习方法 数据结构的一项重要任务就是 把实际应用中的实际问题抽象成数学模型(逻 辑结构),然后再根据不同计算机语言的特点,安排存储结构,为进 一步的操作 和计算服务,我们在学习数据结构时,如果遵循这个原则来学习。不但可以加强 我们的记忆,而且可以加深我们对所学知识的理解,同时也能增强我们利用所学 知识解沈际问源的能 【例3】顺序存储结构、链式存储结构、索引存储结构 假设现在有一套24史书籍,需要放在书架上,从1到24是有次序的,不能 放乱,根据书架的不同情况,我们有不同的放置方法,()如果书架上有足够的
数据结构学习方法 《数据结构》是计算机相关专业的一门重要核心基础课,在整个课程体系中 处于承上启下的核心地位,它以《C 语言程序设计》和《集合论与图论》为基础。 同时又与这两门课程相互融合,相互渗透,《数据结构》的学习同时又能加深对 前两门课程的深入理解,同时为进一步学习《算法分析与设计》、《软件工程》、 《操作系统》、《编译原理》、《数据库理论》等计算机相关专业课程奠定坚实 的理论与实践基础。 学习《数据结构》应具备一定的专业理论知识,特别是应先学好《C 语言程 序设计》和《集合论和图论》两门课程。 以下就自己多年来讲授数据结构的心得,谈一谈学习方法,希望对大家学习 数据结构有所帮助。 学习方法一 从实践到理论的学习方法 数据结构是一门从实践抽象到理论,又用理论来指导实践的学科,因此我们 在学习这门课程的过程中,首先应从实践入手,从日常生活入手,然后再抽象到 理论,下面我们举两个例子来说明这种学习方法。 【例 1】图的广度优先搜索和深度优先搜索算法 想一想在日常生活中,如果有很多个房间,现在需要我们检查每一个房间中 都放了什么物品,我们会怎么检查? 第一种检查方式,我们先检查离我们最近的房间,为了避免重复,每检查过 一个房间,我们需要标记,然后层层推进,这其实就是广度优先搜索的思想,我 们把这种搜索过程进一步规范,按算法的规则写出来,就是广度优先搜索算法。 第二种检查方式,我们先从离我们最近的某一个房间检查,同样为了避免重 复,检查完一个房间后我们要作标记,按同样的方式每次都从刚检查过的房间重 新开始,直到走不动时再逐级回退看看是否还存在没有检查过的房间,这是深度 优先搜索的思想。 【例 2】快速排序算法 假设有一班 30 个学生上体育课,现在需要对这 30 个学生从低到高进行排 序,体育老师可以随意选身高中等的学生,然后让比这个学生高的站在这个学生 右边,比这个学生矮的站在这个学生左边,再对这个学生两边的学生作同样处理, 这就是快速排序的思想,同时也是算法中分治的思想,把这种过程规范地描述出 来,就是快速排序算法。 学习方法二 先逻辑结构后存储结构的学习方法 数据结构的一项重要任务就是把实际应用中的实际问题抽象成数学模型(逻 辑结构),然后再根据不同计算机语言的特点,安排存储结构,为进一步的操作 和计算服务,我们在学习数据结构时,如果遵循这个原则来学习。不但可以加强 我们的记忆,而且可以加深我们对所学知识的理解,同时也能增强我们利用所学 知识解决实际问题的能力。 【例 3】顺序存储结构、链式存储结构、索引存储结构 假设现在有一套 24 史书籍,需要放在书架上,从 1 到 24 是有次序的,不能 放乱,根据书架的不同情况,我们有不同的放置方法,(1)如果书架上有足够的
空间能同时放下这24本书,我1可可以依次放下这些书,就是顺序存储结构:(2 假设没有 一个足够大的空间能够同时放下这些书,同时书架上有很多小空间,这 些小空间合起来可以放下这些书,想一想我们都有那些放置方式:第一种,我们 可以先放第1本书,记下第1本书的位置,然后放第2本书,第2本书的位置我 们可以写一张纸条夹在第1本书中,然后放第3本书,第3本书的位晋写一张纸 条放在第2本书中 这便是链式存储,第1本书的位置就是头指针:第 种,我们把这些书分别放在不同的位置,然后把这些书的位置记录在一张纸上, 这便是索引结构,这张纸就是索引表。 通村对这些实例的分析,书和书架的位智我们可以用不同的符号来表示,议 就是逻辑结构,然后我们结合我们学过的计算机语言知识,考虑怎么样才能实现 这个存储过程,这便是存储结构,通过这样的学习,是不是比死啃书本要好呢 学习方法三书本学习与上机实验相结合 数据结构是一门理论与实验相结合的课程,如果只注重理论,容易造成“眼 高手低”的情况,理论知识学的很扎实,但动手能力很差,不符合我们的培养要 求,反过来,如果只注重实践,又会造成只见“点”不见“面的情况,造成系统 决问题的能力差。因此我们在学习这门课的过程,要采用实验与理论学习紧密结 合的方式,通过上机解决一些典型问题,通过分析、设计、编码、调试等各环节 的训练,深刻理解、牢固掌握所用到的一些技术。每个问题的正确求解,都要通 过分析问题 建立模型 设计算法、编制程序、调试优化等步骤 通过实验后, 可以提高对数据结构课程内容的深入理解,同时也能提高学习兴趣。 学习方法四知识内容共性化与个性化总结的学习方法 在数据结构的内容中,线性结构、树型结构、图型结构都遵循:首先是逻辑 结构、其次是存储结构、接下来是基本操作的实现这 一原则,通过这些共性化可 以理清思路,帮助我们理解,同时针对这三种结构的不同特点,再强调它们各自 在逻辑结构、存储结构和基本操作上的个性化,加深我们的理解。 学习方法五自而向下的学习方法 在数据结构的教学中, 很多学生反映其中的 些算法非常不容易理解 在程 序设计中有一种自项向下的程序设计方法,这种方法同样适用于我们对数据结构 有关算法的学习。对一种算法,首先我们要了解它的思想,然后是分析它的概要, 接下来再考虑细节,如果一开始就逐字逐句地读代码,要花很长时间才能对算法 彻底搞清楚。 们举例说明这种学习过程 【例4】求最短路径的迪杰斯特拉算法 假设有ab,c,d,e共5个顶点形成一个图,现在我们要求顶点a到其它各顶点 的最短路径。 我们首先理解迪杰斯特拉算法的思想 解迪杰斯特拉算法的思想是:求a到其它顶点的最短路径,我们首先求出离 它最近的顶点,也就是与它有边相连并且边长度最短的顶点,假设是©,这样我们 就得到了a到c的最短路径 然后我们再求离a次近的顶点,只能是b.d,e中的一个,这些顶点到a有两 种可能,直接到a或通过c到a,因为c到a的最短路已求出,因此很容易求出bd,e 通过c或不通过c到a的最短距离,找出其中最短的一个,假设是b,这样又求 出了a到b的最短路径,依次类推 理解了这个算法的思想后,我们再逐次考虑算法
空间能同时放下这 24 本书,我们可以依次放下这些书,就是顺序存储结构;(2) 假设没有一个足够大的空间能够同时放下这些书,同时书架上有很多小空间,这 些小空间合起来可以放下这些书,想一想我们都有那些放置方式:第一种,我们 可以先放第 1 本书,记下第 1 本书的位置,然后放第 2 本书,第 2 本书的位置我 们可以写一张纸条夹在第 1 本书中,然后放第 3 本书,第 3 本书的位置写一张纸 条放在第 2 本书中,.,这便是链式存储,第 1 本书的位置就是头指针;第二 种,我们把这些书分别放在不同的位置,然后把这些书的位置记录在一张纸上, 这便是索引结构,这张纸就是索引表。 通过对这些实例的分析,书和书架的位置我们可以用不同的符号来表示,这 就是逻辑结构,然后我们结合我们学过的计算机语言知识,考虑怎么样才能实现 这个存储过程,这便是存储结构,通过这样的学习,是不是比死啃书本要好呢? 学习方法三 书本学习与上机实验相结合 数据结构是一门理论与实验相结合的课程,如果只注重理论,容易造成“眼 高手低”的情况,理论知识学的很扎实,但动手能力很差,不符合我们的培养要 求,反过来,如果只注重实践,又会造成只见“点”不见“面”的情况,造成系统解 决问题的能力差。因此我们在学习这门课的过程,要采用实验与理论学习紧密结 合的方式,通过上机解决一些典型问题,通过分析、设计、编码、调试等各环节 的训练,深刻理解、牢固掌握所用到的一些技术。每个问题的正确求解,都要通 过分析问题、建立模型、设计算法、编制程序、调试优化等步骤。通过实验后, 可以提高对数据结构课程内容的深入理解,同时也能提高学习兴趣。 学习方法四 知识内容共性化与个性化总结的学习方法 在数据结构的内容中,线性结构、树型结构、图型结构都遵循:首先是逻辑 结构、其次是存储结构、接下来是基本操作的实现这一原则,通过这些共性化可 以理清思路,帮助我们理解,同时针对这三种结构的不同特点,再强调它们各自 在逻辑结构、存储结构和基本操作上的个性化,加深我们的理解。 学习方法五 自顶向下的学习方法 在数据结构的教学中,很多学生反映其中的一些算法非常不容易理解,在程 序设计中有一种自顶向下的程序设计方法,这种方法同样适用于我们对数据结构 有关算法的学习。对一种算法,首先我们要了解它的思想,然后是分析它的概要, 接下来再考虑细节,如果一开始就逐字逐句地读代码,要花很长时间才能对算法 彻底搞清楚。下面我们举例说明这种学习过程。 【例 4】求最短路径的迪杰斯特拉算法 假设有 a,b,c,d,e 共 5 个顶点形成一个图,现在我们要求顶点 a 到其它各顶点 的最短路径。 我们首先理解迪杰斯特拉算法的思想 解迪杰斯特拉算法的思想是:求 a 到其它顶点的最短路径,我们首先求出离 它最近的顶点,也就是与它有边相连并且边长度最短的顶点,假设是 c,这样我们 就得到了 a 到 c 的最短路径。 然后我们再求离 a 次近的顶点,只能是 b,d,e 中的一个,这些顶点到 a 有两 种可能,直接到 a 或通过 c 到 a,因为 c 到 a 的最短路已求出,因此很容易求出 b,d,e 通过 c 或不通过 c 到 a 的最短距离,找出其中最短的一个,假设是 b,这样又求 出了 a 到 b 的最短路径,依次类推。 理解了这个算法的思想后,我们再逐次考虑算法
以上介绍了数据结构的几种学习方法,仅供大家在学习数据结构的过程中参 考,大家在学习的过程中,也会形成适合自己的学习方法,适合自己的才是最好 的
以上介绍了数据结构的几种学习方法,仅供大家在学习数据结构的过程中参 考,大家在学习的过程中,也会形成适合自己的学习方法,适合自己的才是最好 的