范文为教学中作为模范的文章,也常常用来指写作的模板。常常用于文秘写作的参考,也可以作为演讲材料编写前的参考。大家想知道怎么样才能写一篇比较优质的范文吗?下面是小编帮大家整理的优质范文,仅供参考,大家一起来看看吧。
数据结构课程设计矩阵的运算篇一
单链表是数据结构中的一种基本存储结构,它通过节点之间的指针链接将一组节点有序地串联起来。在学习和应用单链表的过程中,我深刻体会到了它的优势和应用场景。在下面的文章中,我将从单链表的基本概念、操作方法、优势、应用场景和自己的心得感受五个方面来谈谈对单链表的认识和体会。
首先,单链表的基本概念。单链表是由若干个节点组成的链式结构,每个节点由数据域和指针域组成,数据域存储数据元素,指针域存储指向下一个节点的指针。单链表的头节点不存储数据,只作为链表的入口。通过节点之间的指针链接,形成一个有序的链表结构。这种链式结构能够动态地插入、删除节点,以适应不同的应用需求。
其次,单链表的操作方法。单链表的操作方法主要包括插入、删除、查找和遍历等。插入操作通过修改指针的指向,在合适的位置插入新节点;删除操作通过修改指针的指向,将要删除的节点从链表中摘除;查找操作通过遍历链表的方式,找到指定的节点;遍历操作可以按照顺序访问链表中的每个节点,并对其进行操作。这些操作方法可以灵活地对单链表进行增删改查,使得单链表成为一种高效、便捷的数据结构。
接下来,单链表的优势。相比于数组等其他数据结构,单链表有着许多独特的优势。首先,单链表的插入和删除操作是O(1)的时间复杂度,即与链表长度无关,而数组的插入和删除操作则需要移动大量元素,时间复杂度为O(n)。其次,单链表可以动态地分配内存空间,不需要预先确定长度,而数组需要事先确定固定的长度。再次,单链表的插入和删除操作不会导致内存碎片问题,而数组的插入和删除操作会引起内存的频繁分配和释放,容易产生内存碎片。因此,单链表在某些具体的应用场景中会表现出更好的性能和灵活性。
再者,单链表的应用场景。单链表在实际开发中有着广泛的应用场景。最典型的应用场景是实现高效的插入和删除操作,如LRU缓存淘汰算法、图的邻接表表示等。此外,单链表还可以用于实现其他数据结构,如栈和队列。栈可以通过单链表的头节点来表示栈顶,通过插入和删除节点来实现入栈和出栈操作;队列可以通过单链表的尾节点来表示队尾,通过插入和删除节点来实现入队和出队操作。这些应用场景都充分发挥了单链表的优势,提高了程序的性能和效率。
最后,我对单链表的心得体会。学习和应用单链表的过程中,我感受到了数据结构的重要性和灵活性。单链表作为一种基本的数据结构,在解决实际问题时起到了非常重要的作用。通过实践和思考,我逐渐掌握了单链表的基本概念和操作方法,并学会了如何灵活地应用它来解决实际问题。单链表的优势和应用场景让我对数据结构产生了更深的理解和兴趣,我会继续深入学习和探索更多的数据结构,为解决实际问题提供更多的可能性。
综上所述,单链表作为一种基本的数据结构,通过节点之间的指针链接实现了动态的插入和删除操作。它的优势和应用场景使得它成为一种高效、便捷的数据结构,被广泛应用于各个领域。在学习和应用单链表的过程中,我深刻体会到了数据结构的重要性和灵活性,并对自己的专业技能有了更深的认识和提升。我相信,在今后的学习和工作中,单链表这个简单而又强大的数据结构将继续在我的程序设计中发挥重要的作用。
数据结构课程设计矩阵的运算篇二
数据结构是计算机科学中非常重要的一门课程,它涉及到了计算机中数据的存储、管理和操作等方面。而单链表作为常见的数据结构之一,是数据存储和处理过程中不可或缺的部分。通过学习和应用单链表,我不仅深入了解了其原理和特点,也更好地理解了数据结构的内涵和作用。在这个过程中,我获得了许多心得体会。
首先,学习单链表让我深刻体会到了数据结构的灵活性和高效性。在单链表中,节点通过指针链接,形成了一个动态的数据结构。这种数据结构可以动态地插入、删除节点,而且对于节点的访问可以高效地进行。相比于其他数据结构,单链表更加便于扩展和操作,使得程序能够更加高效地进行数据处理。与此同时,单链表的简洁结构也使得代码的编写更加简单,具有一定的通用性,能够适应各种复杂的业务场景。
其次,学习单链表让我更加深刻地认识到了代码的逻辑性和抽象能力的重要性。在使用单链表的过程中,我需要根据问题的需求对其进行操作和处理。这就要求我具备良好的抽象思维和逻辑思考能力。通过对问题的深入分析和思考,我可以合理地设计单链表的结构和操作,使得代码的逻辑更加清晰和易于理解。在这个过程中,我发现代码的质量和可读性对于程序员来说是非常重要的,而单链表的学习让我更加注重代码的设计和规范,提高了我的编码能力。
再次,学习单链表让我认识到了数据的存储和管理对于程序运行的重要性。在单链表中,每个节点都需要存储数据和指针信息,而这些信息的存储方式将直接影响程序的运行效率和容量。通过学习单链表,我了解了不同的存储结构和算法对程序性能的影响,并能够通过合理的存储和管理策略来提升程序的性能。这个过程让我更加注重数据的存储和管理,提高了我对程序性能的认识和理解。
最后,学习单链表让我对算法的设计和实现有了更深刻的了解。在单链表中,许多常用的操作和算法都可以应用和扩展,比如插入、删除、查找等。通过学习单链表,我不仅了解了这些算法的基本原理和应用场景,还学会了如何根据具体问题进行算法设计和实现。通过对算法的研究和思考,我不仅提高了解决问题的能力,还提升了自己的编程水平和思维能力。
综上所述,学习单链表是我在数据结构课程中获得的一次宝贵的经验。通过学习和应用单链表,我不仅加深了对数据结构的理解,还提高了自己的编程能力和思维能力。在今后的学习和工作中,我将继续加强对数据结构的学习和应用,并努力将所学知识转化为实际的成果和价值,为计算机科学领域的发展做出自己的贡献。
数据结构课程设计矩阵的运算篇三
课程编号:030816 适用专业:教育技术学 总学时数:64
一、课程地位、性质和任务
《数据结构与算法》课程是计算机相关学科专业的基础课程中的一门重要的核心课程。通过本课程的教学,使学生知道求解非数值类问题的基本模型(表、树、图),模型的特点和适用场合,能够根据问题设计和选择好的算法,为学习后续的操作系统、编译原理和软件工程等专业课程,设计应用程序打下基础。
本课程以提高学生的计算机应用能力和综合素质为目标,通过课程教学,为学生构建数据结构与算法方面的知识体系,使学生一方面能够根据问题选择合适的数据结构,设计高效的算法,提高程序设计能力,另一方面,在工程应用中,具有甄别好算法的能力,也就是要从建模、解模和综合等三个方面,提高学生的程序设计能力。
二、与其他课程的关系
先修课:程序设计基础、离散数学、计算机组成原理、计算机文化基础
三、教学内容、课时安排和基本要求
1.3 抽象数据类型的表示与实现
基本要求:
了解:抽象数据类型,算法设计方法与算法分析。
掌握:数据与数据结构、算法的基本概念;问题求解的方法与步骤 重点:数据结构和算法的概念,算法的描述形式和评价方法,问题求解的一般步骤 难点:评价算法的标准和评价方法,最坏情况和平均情况的区分。
基本要求:
了解:两种存储结构(顺序存储结构和链式存储结构)及一元多项式的表示及相加。
掌握:要求熟练掌握处理线性表的各种算法。为后继章节的学习打基础。重点:各种算法。难点:链表的理解。
第3章 栈与队列(4学时)
3.1 栈(定义,栈的表示和实现)
3.2 栈的应用举例(数制转换,括号匹配的检验,行编辑程序,迷宫求解,表达式求值)
3.3 栈与递归的实现
3.4 队列及其实现(定义,链队列,循环队列)3.5 *离散事件模拟
教学要求:熟练掌握栈和队列的特性和在不同存储结构前提下的算法实现。栈和队列是表最基本和重要的数据结构,是数据结构课程的基础。
基本要求:
了解: 栈和队列的定义及其实现。
掌握: 熟练掌握栈和队列的特性和在不同存储结构前提下的算法实现。重点: 栈和队列的算法实现。难点: 栈和队列的算法实现。
第4章 串(2学时)4.1 串类型的定义
4.2 串的表示和实现(定长顺序存储,堆分配存储,串的块链存储)4.3 串的模式匹配算法(求子串位置的定位函数,模式匹配的一种改进算法)4.4 串操作应用举例(文本编辑,建立词索引表)
基本要求:
了解:串的基本概念及主要操作和运算。掌握:掌握串的基本概念和运算。重点:主要操作和运算。难点:模式匹配及串的应用。
第5章 数组(2学时)5.1 数组的定义
5.2 数组的顺序表示和实现
5.7 广义表的递归算法(求广义表的深度,复制广义表,建立广义表的存储结构)
基本要求:
了解:了解作为抽象数据类型的数组和c语言的数组。认识到数组可以作为顺序存储结构用于顺序表、字符串和稀疏矩阵的实现。也可以采用链式存储结构。
掌握:掌握基本概念和算法。重点:算法。
难点:广义表的递归算法。
第6章 树与二叉树(15学时)6.1 树的定义和基本术语
6.2 二叉树(二叉树的定义,二叉树的性质,二叉树的存储结构)6.3 遍历二叉树和线索二叉树(遍历二叉树,线索二叉树)
基本要求:
了解:理解树与森林的定义与术语。
第7章 图(11学时)7.1 图的定义和术语
7.2 图的存储结构(数组表示法,邻接表,十字链表,邻接多重表)7.3 图的遍历(深度优先搜索,广度优先搜索)
7.4 图的连通性问题(无向图的连通分量和生成树,有向图的强连通分量,最小生成树,关节点和重连通分量)
7.5 有向无环图及其应用(拓扑排序,关键路径)
7.6 最短路径(从某个源点到其余各项点的最短路径,每一对顶点之间的最短路径)基本要求:
了解:图的基本概念和相关术语。
掌握:图的两种主要存储结构及遍历算法。掌握最小生成树、最短路径和活动网算法的思想。
重点:图的两种主要存储结构及遍历算法。难点:图的遍历算法,最短路径算法。
第8章 查找(8学时)
9.1 静态查找表(顺序表,有序表,静态树表,索引顺序表)9.2 动态查找表(二叉排序树和平衡二叉树,b_树和b+树,键树)9.3 哈希表(定义,构造方法,处理冲突的方法,查找及其分析)
基本要求:
了解: 各种查找法的基本概念及实现的基本思想。
掌握:熟练掌握搜索结构的折半查找、二叉搜索树、平衡二叉树主要搜索算法。掌握哈希表查找算法。重点:各种算法的基本思想及实现。难点:哈希表查找算法。
第9章 内部排序(8学时)10.1 概述
10.6 基数排序(多关键字,链式)10.7 排序算法分析
基本要求:
了解:基数排序,排序算法分析方法
掌握:排序的基本概念,插入排序,交换排序,选择排序,归并排序重点:内部排序算法
难点:基数排序(多关键字,链式)
基本要求:
了解:外部排序的基本概念和相关术语。
掌握:基本掌握外排算法的基本思想,不同排序方法的比较。重点:外部排序算法 难点:多路平衡归并的实现 第11章 算法设计的一般方法(2学时)
1.重点
(1)有效算法的概念,问题固有难度的概念;
(1)问题固有难度的概念;
(2)递归分治法的效率分析(写出时间耗费的递推式,并求解);(3)动态规划法中的状态转移方程的确定。
(二)实验、实习部分
课程安排五个类别的实验,实验时数为12课时,其中: 实验
一、线性链表及运算 2课时 实验
二、栈和队列 2课时 实验
三、树和二叉树 4课时 实验
四、图及其应用 2课时 实验
五、查找与排序 2课时
四、课程考核方式
闭卷考试70%、平时作业与实验30%
五、建议教材和教学参考书 参考教材:
1、《数据结构》(c语言描述)高等教育出版社 耿国华主编
2、《数据结构》(c语言版)清华大学出版社 严蔚敏,吴伟民编者
3、《数据结构题集》(c语言版)清华大学出版社 严蔚敏,吴伟民编者
4、《数据结构》算法实现及解析(第二版)西安电子科技大学出版社 高一凡
六、说明
1、因课时安排少,教学内容多。建议采用多媒体教学。
2、由于本课程内容较多,在实际教学中可根据大纲内容,进行适当调整。
数据结构课程设计矩阵的运算篇四
一.基本要求重点、难点
二.考核目标和考核要求
要求达到识记层次的有:数据、数据元素、数据项、数据结构等的基本概念;数据结构的逻辑结构、存储结构及数据运算的含义及其相互关系;数据结构的两大逻辑结构和四种常用的存储表示方法;数据结构在各种软件系统中所起的作用;选择合适的数据结构是解决应用问题的关键步骤。
要求达到理解层次有:算法、算法的时间复杂度和空间复杂度、最坏情况下的时间复杂度和平均时间复杂度等概念;算法的时间复杂度不仅仅依赖于问题的规模,也取决于输入实例的初始状态;算法描述和算法分析的方法,对于一般算法能力分析出时间复杂度。
要求达到简单应用的有:时间复杂度的算法
三.练习题
1.单项选择题
1.1在数据结构中,从逻辑上可以把数据结构分为(b)
a)紧凑结构和非紧凑结构
b)线性结构和非线性结构
c)内部结构和外部结构
d)动态结构和静态结构
数据结构中从逻辑上可以把数据结构分为线性结构和非线性结构
1.2线性表的顺序存储结构是一种(c)的存储结构
a)顺序存取
b)索引存取
c)随机存取
d)散列存取
线性表的顺序存储结构是一种随机存取的存储结构,线性表的链式存储结构是一种顺序存取的存储结构。
1.3逻辑关系是指数据元素的(a)
a)关联
b)存储方式
c)结构
d)数据项
1.4下列时间复杂度中最坏的是(d)
a)o(1)
b)o(n)
c)o(log2n)
d)o(n2)
1.5下列时间复杂度最好的是(a)
a)o(1)
b)o(n)
c)o(log2n)
d)o(n2)
1.6下列算法是时间复杂度是(d)
for(i=0;i
for(j=0;j
c[i][j]=i+j;
a)o(1)
b)o(n)
c)o(log2n)
d)o(n2)
1.7算法分析的两个主要方面是(d)
a)正确性和简明性
b)数据复杂性和程序复杂性
c)可读性和可维护性
d)时间复杂性和空间复杂性
1.8线性表若采用链式存储结构存储时,要求内存中可用存储单元地址(a)
a)不一定连续的
b)部分地址必须是连续的
c)必须是连续的
d)一定是不连续的
1.9算法指的是(d)
a)计算机程序
b)解决问题的计算方法
c)排序算法
d)解决问题的有限运算序列
1.10数据的基本单位是(b)
a)文件
b)数据元素
c)符号
d)关键字
2.填空题
2.1数据结构一般包括[逻辑结构]、存储结构和数据运算三个方面的内容,
2.2从数据结构s中找出满足条件的结点在s中的位置的运算是[查找]
2.3从数据结构s中读出结构中指定位置上的内容的运算是[读取]
2.4从数据结构s中的某指定位置上增加一个结点的运算是[插入]
2.5从数据结构s中撤消结构中指定位置上结点的运算是[删除]
2.6从数据结构s中修改结构中某指定结点内容的运算是[更新]
2.7数据的存储结构(物理结构)可以用顺序存储、链式存储、[索引存储]及散列存储等四种存储方法表示。
2.10数据的逻辑结构是从逻辑关系上描述数据,它与数据的[存储结构]无关,是独立于计算机的。
3.简答题
3.1简述数据与数据元素的关系与区别
答:凡是能被计算机存储、加工的对象统称为数据,数据是一个集合。数据元素是数据的基本单位,是数据的一个元素。数据元素与数据之间的关系是元素与集合之间的关系。
答:数据:数据是信息的载体,它能够被计算机识别、存储和加工处理
数据元素:是数据的基本单位。有时一个数据元素包含几个数据项
数据类型:是一个值的集合以及在这些值上定义的一组操作的总称
数据结构:指的是数据之间的逻辑关系也称数据的逻辑结构。它包括线性结构和非线性结构两大类。
存储结构:数据元素及其关系在计算机存储器内的表示,称为数据的存储结构。
非线性结构:该结构的逻辑特征是一个结点可能有多个直接前驱和直接后继
3.3简述顺序存储结构与链式存储结构在表示数据元素之间关系上的主要区别
答:顺序存储结构是将各数据元素的存储位置按其之间的逻辑关系存放在一块连续的存储空间内,由数据元素的存储位置体现数据元素之间的逻辑关系。链式存储结构各数据元素不一定是存储在连续的一块存储空间内,数据元素之间的逻辑关系与存储位置没有一一对应的关系,数据元素之间的逻辑关系,是依靠附加在存储数据元素的结点中的指针表示。
3.4通常从哪几个方面评价算法的质量
答:
a.算法必须是正确的
b.执行算法所耗费的时间
c.执行算法所耗费的空间,其中主要考虑辅助存储空间
d.算法应易于理解、易于编码、易于调试等
4.应用题
4.1求下述算法的时间复杂度
for(i=1;i=n;i++)
{
y=y+1;
for(j=1;j=2*n;j++)
x=x+1;
}
答:其中语句y=y+1的频度是n-1,语句x=x+1的频度是(n-1)(2n+1)。所以该程序的算法时间复杂度是:t(n)=o((n-1)(2n+1))=o(n2)
4.2求下述算法的时间复杂度
x=1;
sum=0;
for(i=1;i=n;i++)
{
x=x*i;
sum=sum+x;
}
答:由于嵌套最深的语句的频度为n,所以其算法的时间复杂度为o(n)。
数据结构课程设计矩阵的运算篇五
数据结构是计算机科学中的重要基础知识之一,而单链表作为其中的一种数据结构,具有很强大的灵活性和实用性。在学习单链表的过程中,我深刻体会到了它的优势和应用场景,也发现了一些需要注意的地方。下面我将结合自己的思考和实践,分享一些关于单链表的心得体会。
二、结构与特点
单链表是由一系列节点组成的数据结构,每个节点包含着数据和指向下一个节点的指针。相对于数组,单链表的特点是灵活而且插入和删除元素的时间复杂度为O(1),而查找某个元素的时间复杂度则为O(n)。这使得单链表在需要频繁插入和删除元素的场景中非常适用,如操作系统的进程管理、图算法中的邻接链表等。
三、注意事项
在使用单链表时,需要注意一些细节以保证其正确性和高效性。首先,要注意链表为空的情况,也就是头节点为空的情况,需要进行特殊处理。其次,链表的插入和删除操作要注意维护好指针的指向,避免出现指针丢失和内存泄漏的问题。最后,在处理链表时,需要考虑到特殊情况,如遍历时到达链表末尾,删除时需要删除的节点不存在等,这些都需要进行相应的处理,以避免程序出错。
四、实际应用
单链表在实际的软件开发中有着广泛的应用。比如,在图形学中,可将单链表应用于保存复杂的图形信息,如多边形的边或顶点。此外,单链表也常用于操作系统的进程管理中,通过将所有的进程节点串联起来,便于对进程进行管理和操作。此外,数据库中的索引也可以使用单链表实现,通过链表记录数据的位置信息,提高检索效率。因此,理解单链表的结构和特点,可以有效地应用于各种编程场景中,提高代码的质量和效率。
五、总结
在学习和应用单链表的过程中,我深刻认识到了其在数据结构中的重要性和实用性。单链表以其独特的结构和特点,满足了对插入和删除操作高效且频繁的需求,应用广泛且灵活。在实际的软件开发中,单链表也有着广泛的应用场景,如图形学、操作系统等。同时,我们在使用单链表时也需要注意一些细节,以保证其正确性和高效性。总之,掌握单链表的知识,并结合实际应用,能够更好地编写出高效、稳定的代码。
数据结构课程设计矩阵的运算篇六
本学期开设的《数据结构与算法》课程已经告一段落,现就其知识点及其掌握情况、学习体会以及对该门课程的教学建议等方面进行学习总结。
一、《数据结构与算法》知识点
第一章是这门学科的基础章节,从整体方面介绍了“数据结构和算法”,同时引入相关的学术概念和术语,如数据、数据元素、数据类型以及数据结构的定义。重点是数据结构的括逻辑结构、存储结构和运算集合的含义及其相互联系。数据结构和两大逻辑结构的4四种常用存储方法;逻辑结构分为四类:集合型、线性、树形和图形结构,数据元素的存储结构分为:顺序存储、链接存储、索引存储和散列存储四类。难点是算法复杂度的分析方法和性能的分析。
第二章详细地分析了顺序表。介绍了顺序表的相关概念及其有关运算。基本运算有:初始化表、求表长、排序、元素的查找、插入及删除等。元素查找方法有:简单顺序查找、二分查找和分块查找。排序方法有:直接插入排序、希尔排序、冒泡排序、快速排序、直接选择排序及归并排序等,在各种算法思想的先分析后,要弄清各种算法的时间复杂度与空间性能的优点和缺点,在什么特定的场合适合哪种算法思想。最后介绍了顺序串的概念,顺序串是顺序表的一个特例;区别在于组成顺序串的数据元素是一组字符,其重点在于串的模式匹配。
第三章介绍链表。链表中数据元素的存储不一定是连续的,还可以占用任意的、不连续的物理存储区域。与顺序表相比,链表的插入、删除不需要移动元素,给算法的效率带来较大的提高,且在存储空间上有动态申请的优点。这一章中介绍了链表的节点结构、静态与动态链表的概念、链表的基本运算(如求表长、插入、查找、删除等)、单链表的建立(头插法和尾插法)以及双向循环链表的定义、结构、功能和基本算法。弄清其个运算的算法思想及其时间复杂度和空间性能。最后介绍了链表之中存储结构在实际中的相关应用。
第四章,堆栈是运算受限制的线性结构。其基本运算方法与顺序表和链表运算方法基本相同,不同的是堆栈须遵循“先进后出”的规则,对堆栈的操作只能在栈顶进行;堆栈在文字处理,匹配问题和算术表达式的求值问题方面的应用。
第五章,队列是一种够类似堆栈的线性结构。其基本运算方法与顺序表和链表运算方法基本相同,不同的是堆栈须遵循“先进先出”的规则,对堆栈的操作只能在栈顶进行;其运算有入队、出队等操作。在介绍队列时,提出了循环队列的概念,以避免“假溢出”的现象。
第六章介绍了特殊矩阵和广义表的概念与应用。其中,特殊矩阵包括对称矩阵、三角矩阵、对角矩阵和稀疏矩阵,书中分别详细介绍了它们的存储结构。其中三元组和十字链表这两种结构尤为重要;对着两种结构的建立了应用要掌握。稀疏矩阵的应用包括转置和加法运算等。最后介绍了广义表的相关概念及存储结构,关于它的应用,课本中举了m元多项式的表示问题。
第七章二叉树的知识是重点内容。在介绍有关概念时,提到了二叉树的性质以及两种特殊的二叉树:完全二叉树和满二叉树。接着介绍二叉树的顺序存储和链接存储以及生成算法。重点介绍二叉树的遍历算法(递归算法、先序、中序和后序遍历非递归算法)和线索二叉树。二叉树的应用:基本算法、哈弗曼树、二叉排序树和堆排序,其中关于二叉排序树和哈弗曼书的构建是重点。
第八章介绍了树。树与二叉树是不同的概念。教材介绍了树和森林的概念、遍历和存储结构,还有树、森林和二叉树的相互关系,树或森林怎样转化成二叉树,二叉树又如何转换为树和森林等算法。
第九章,散列结构是一种查找效率很高的一种数据结构。本章的主要知识点有:散列结
构的概念及其存储结构、散列函数、两种冲突处理方法、线性探测散列和链地址散列的基本算法以及散列结构的查找性能分析。
最后一章介绍了图的概念及其应用,是本书的难点。图的存储结构的知识点有:邻接矩阵、邻接表、逆邻接表、十字链表和邻接多重表。图的遍历包括图的深度优先搜索遍历和广度优先搜索遍历。其余知识点有:有向图、连通图、生成树和森林、最短路径问题和有向无环图及其应用。有向无环图重点理解aov网和拓扑排序及其算法。
二、对各知识点的掌握情况
总体来看,对教材中的知识点理解较为完善,但各个章节均出现有个别知识点较为陌生的现象,对某些具体的问题和应用仍有一些模糊与措手。各个章节出现的知识点理解和掌握情况明确一下。
第一章中我对数据和数据结构的概念理解较为透彻,熟悉数据结构的逻辑结构和存储结构。算法的时间、空间性能分析是重点,同样也是难点,尤其是空间性能分析需要加强。在某些强大与复杂的算法面前的处理有些棘手。
第二章,顺序表的概念、生成算法理解较为清晰,并且熟悉简单顺序查找和二分查找,对分块查找较为含糊。删除方面的问题比较容易些。排序问题中,由于冒泡排序在大一c语言课上已经学习过,再来学习感觉相对轻松些。对插入排序和选择排序理解良好,但是,在实际运用中仍然出现明显不熟练的现象。由于在归并排序学习中感觉较吃力,现在对这种排序方法仍然非常模糊,所以需要花较多的时间来补习。此外串的模式匹配也是较难理解的一个地方。
第三章链表中,除对双向循环链表这一知识点理解困难之外,在对链表进行插入删除和排序相关操作上同顺序表的操作基本相当。其他的知识点像单链表的建立和基本算法等都较为熟悉。
第四章和第五章有关堆栈以及队列的知识点比较少,除有关算法较为特殊以外,其余算法都是先前学过的顺序表和链表的知识,加上思想上较为重视,因此这部分内容是我对全书掌握最好的一部分。在一些实际问题的应用与处理方面,对其进行存储结构的选择还是需要认真考虑的。在算法的时间复杂度和空间性能的分析仍有些困难。
第六章的学习感觉较为困难的部分在于矩阵的应用上。在矩阵的存储结构中,使用三元组表发相对较为简单,而使用十字链表就有些困难了。但在某些问题的处理上又必须或从节省空间考虑采用十字链表来处理,想矩阵的加法运算。广义表的定义还是比较容易理解的,其存储结构也不难掌握,关于应用也只局限于在多项式的表示上。
第七章是全书的重点。在这一章中概念和定义都很多,有些很昏人但都很重要,要区分开来。二叉树的性质容易懂却很难记忆。对二叉树的存储结构和遍历算法这部分内容掌握较好,能够熟练运用。关于二叉排序树和的哈弗曼树却相对有些压力,其生成和对其关键字的插入和删除时重点。
第八章关于树的分析,首先要明确树和二叉树的区别,以及书中的相关定义和概念。关于二叉树、树和森林之间的转换和遍历方法是重点,但不算是难。接着就是数的存储结构的选择及转化为二叉树的算法,这部分有些吃力。再就介绍了特殊的树-b树,关于对b树的操作,插入关键字是中带领和难点。
第九章散列结构这一章理解比较完善的知识点有:基本概念和存储结构。散列函数中直接定址法和除留余数法学得比较扎实,对数字分析法等方法则感觉较为陌生。对两种冲突处理的算法思想的理解良好,问题在于用c语言描述上。
在学习开始,王教授就明确提出它不是一种计算机语言,不会介绍新的关键词,而是通过学习可以设计出良好的算法,高效地组织数据。一个程序无论采用何种语言,其基本算法思想不会改变。联系到在大一和大二上学期学习的c和c++语言,我深刻认识到了这一点。“软件开发好比写作文,计算机语言提供了许多华丽的辞藻,而数据结构则考虑如何将这些辞藻组织成一篇优秀的文章来。”在学习这门课中,要熟悉对算法思想的一些描述手段,包括文字描述、图形描述和计算机语言描述等。因此,计算机语言基础是必须的,因为它提供了一种重要的算法思想描述手段——机器可识别的描述。
这门课结束之后,我总结了学习中遇到的一些问题,最为突出的,书本上的知识与老师的讲解都比较容易理解,但是当自己采用刚学的知识点编写程序时却感到十分棘手,有时表现在想不到适合题意的算法,有时表现在算法想出来后,只能将书本上原有的程序段誊写到自己的程序中再加以必要的连接以完成程序的编写。针对这一情况,我会严格要求自己,熟练掌握算法思想,尽量独立完成程序的编写与修改工作,只有这样,才能够提高运用知识,解决问题的能力。
四、对《数据结构与算法》课程教学的建议
1、建议在上课过程中加大随堂练习的分量,以便学生能当堂消化课堂上学习的知识,也便于及时了解学生对知识点的掌握情况,同时有助于学生保持良好的精神状态。
2、建议在课时允许的情况下,增加习题课的分量,通过课堂的习题讲解,加深对知识点的掌握,同时对各知识点的运用有一个更为直观和具体的认识。
以上便是我对《数据结构与算法》这门课的学习总结,我会抓紧时间将没有吃透的知识点补齐。今后我仍然会继续学习,克服学习中遇到的难关,在打牢基础的前提下向更深入的层面迈进!