第一篇:数据结构与算法课程设计的心得体会之欧拉回路
数据结构与算法课程设计的心得体会
通过本次课程设计,让我对图的概念有了一个新的认识。同时感觉到数学在计算机编程中的中要作用。良好的数学素养可以让问题得到简化,可以让程序变得简单精炼,可以降低程序的空间复杂度和时间复杂度。
本次课程设计的难度不大。首先思路清晰是非常重要的。要解决好题目中的问题首先要将实际问题很好的转化为它的数学模型,然后选择适当的数据结构,再对具体问题进行算法设计,最后编写、调试程序。思路清晰这样,解决起问题就变的轻松了很多。
同时,熟练的运用转化的思想可以让问题的解决变得简单。我在解决本题时联想到离散数学课本中的欧拉图的定义和一个定理:无向图G是欧拉图当且仅当G是连通图且没有奇度顶点。根据欧拉图的定义和定理我们就可以把是否存在欧拉回路的问题转化为是否为欧拉图的问题,证明是否为欧拉图即可。这样我们就能很容易的解决问题了。所以,对问题的转化在本题中起到了化难为简的作用。可见,转化的思想在我们实际解决问题的时候是多么的重要。
多组数据进行多次测试很重要。首先对我们来说调试过程中Bug是常见的,面对Bug不能心生畏惧,只要我们足够的冷静的分析错误的大概位子处的代码,不难找出错误的原因,消除Bug。在本次课程设计测试中,一开始在测试第三组数据时,输出结果与实际不符。仔细分析后发现,记录顶点的度数时当遇到顶点自身的环时,度数会少记录一次,所以在判断是否计数的时候加入了是否含有自身环的判断。含环时则不计数没这样不会对奇偶性的判断带来影响。所以,数据的测试一定要精心选取多组数据进行多次测试,这样才能保证程序的健壮性。
最后要强调的是编程时格式的规范性。通过这次课程设计让我在编程时的格式更加规范。例如,在比较难理解的语句后加上注释。这样不但方便我们自己调试、修改程序,更可以让其他人在阅读我们的程序时容易快速理解把握我们的编程思路,理解我们程序的每一语句。
在课程设计的过程中巩固和加深了我对数据结构的理解,提高综合运用本课程所学知识的能力。同时也培养了我选用参考书,查阅手册及文献资料的能力。培养了我的独立思考,深入研究,分析问题、解决问题的能力。通过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。通过课程设计,培养了我严肃认真的工作作风,逐步建立正确的生产观念、经济观念和全局观念。
根据我在实习中遇到得问题,我将在以后的学习过程中注意以下几点:
1、认真上好专业实验课,多在实践中锻炼自己。
2、写程序的过程中要考虑周到,严密。
3、在做设计的时候要有信心,有耐心,切勿浮躁。
4、认真的学习课本知识,掌握课本中的知识点,并在此基础上学会灵活运用。
5、在课余时间里多写程序,熟练掌握在调试程序的过程中所遇到的常见错误,以便能节省调试程序的时间。
总的来说,通过本次课程设计让我对图的数据结构以及图的搜索有了更深的认识,让我对数据结构这门课程有了跟多的了解,同时让我程序的编写更加规范,编程能力和速度有了一定的提高。同时让我感觉到学无止境,我们要抱有一颗虚心好学的心,以谨慎态度对待学习。我们只有不断的学习这样我们才能不被行业淘汰,才能在我们自己的领域里有一席之地。另外,我们还应不断地提高自己的数学素养,这样才能让我们的程序更加精炼,更加经典。
第二篇:数据结构与算法课程设计 心得体会 学习体会
课程设计的心得体会
陈康荫080401200708级计科系计本(2)班
完成了这次的二元多项式加减运算问题的课程设计后,我的心得体会很多,细细梳理一下,有以下几点:
1、程序的编写中的语法错误及修改
因为我在解决二元多项式问题中,使用了链表的方式建立的二元多项式,所以程序的空间是动态的生成的,而且链表可以灵活地添加或删除结点,所以使得程序得到简化。但是出现的语法问题主要在于子函数和变量的定义,降序排序,关键字和函数名称的书写,以及一些库函数的规范使用,这些问题均可以根据编译器的警告提示,对应的将其解决。
2、程序的设计中的逻辑问题及其调整
我在设计程序的过程中遇到许多问题,首先在选择数据结构的时候选择了链表,但是链表的排序比较困难,特别是在多关键字的情况下,在一种关键字确定了顺序以后,在第一关键字相同的时候,按某种顺序对第二关键字进行排序。在此程序中共涉及到3个量数,即:系数,x的指数和y的指数,而关键字排是按x的指数和y的指数来看,由于要求是降幂排序且含有2个关键字,所以我先选择x的指数作为第一关键字,先按x的降序来排序,当x的指数相同时,再以y为关键字,按照y的指数大小来进行降序排列。
另外,我在加法函数的编写过程中也遇到了大量的问题,由于要同时比较多个关键字,而且设计中涉及了数组和链表的综合运用,导致反复修改了很长的时间才完成了一个加法的设计。但是,现在仍然有一个问题存在:若以0为系数的项是首项则显示含有此项,但是运算后则自动消除此项,这样是正确的。但是当其不是首项的时候,加法函数在显示的时候有0为系数的项时,0前边不显示符号,当然,这样也可以理解成当系数为0时,忽略这一项。这也是本程序中一个不完美的地方。
我在设计减法函数的时候由于考虑不够充分就直接编写程序,走了很多弯路,不得不停下来仔细研究算法,后来发现由于前边的加法函数完全适用于减法,只不过是将二元多项式B的所有项取负再用加法函数即可,可见算法的重要性不低于程序本身。
3、程序的调试中的经验及体会
我在调试过程中,发生了许多小细节上的问题,它们提醒了自己在以后编程的时候要注意细节,即使是一个括号的遗漏或者一个字符的误写都会造成大量的错误,浪费许多时间去寻找并修改,总结的教训就是写程序的时候,一定要仔细、认真、专注。
我还有一个很深的体会就是格式和注释,由于平时不注意格式和注释这方面的要求,导致有的时候在检查和调试的时候很不方便。有的时候甚至刚刚完成一部分的编辑,结果一不注意,就忘记了这一部分程序的功能。修改的时候也有不小心误删的情况出现。如果注意格式风格,并且养成随手加注释的习惯,就能减少这些不必要的反复和波折。还有一点,就是在修改的时候,要注意修改前后的不同点在哪里,改后调试结果要在原有的基础上更加精确。
第三篇:数据结构与算法 课程设计的心得体会
课程设计的心得体会
这次课程设计抽到了一个不太好的题目,是“国王与骑士”问题。乍一看是完全没有头绪,甚至连题目要求都感觉有些晦涩难懂。虽然很羡慕那些抽到了简单题目的同学,但既已成为事实,也没有办法,于是我便静下心来思考“国王与骑士”。
仔细钻研了一天,终于有了些思路,但都只是泛泛而谈,根本不能转化为具体的算法。就比如说骑士的走法问题吧,骑士是以“马”字形行走的,要判断两点间的最短路径,虽然肉眼判断比较简单,但转化成计算机问题时就出现了一系列问题。于是我又不得不停下程序的思考,去查询各种资料。我首先吧整个问题分裂开来,分解成了多个细小的问题,然后再分别查询每一个小问题,这样就轻松多了。就像上面的例子,我只需要查询有关最短路径的算法,就可以解决,这节省了我很多时间。但是。即使是一个简单问题也有多种算法可以解决,这就要求我根据题设条件进行判断,从中寻找最优算法。比如,在球巨额骑士的最短路径时就有弗洛伊得算法,迪杰斯特拉算法,还可以通过广度优先探测的方法等等。但就这一问题而言,我觉得在这里应用广度优先搜索应该是最简单易行的,而且使得算法的时间复杂度会大大降低。就这样,通过问题的分解,以及每个小问题的查询资料与询问老师,我逐步解决着这个问题。
在这一个星期的上机实践学习中,我对C语言有了更进一步的认识和了解,我明白了要想学好它要重在实践,要通过不断的上机操作才能更好地学习它。通过实践,我也发现我的好多不足之处,首先就是自己的经验还很匮乏,在设计算法思路时总是以自然的语言去理解分析,而不能把自己放在机器的角度去看问题,这就导致了许多问题看似可以解决,但真正到了上机编程敲代码是却无从下手。再有对C语言的一些标准库函数以及对函数调用的正确使用不够熟悉,另外,我还对C语言中经常出现的错误也不太了解,也不够敏感,这使得我在程序的调试过程中花费了太多多余的时间。通过实践,使我在这几个方面的认识有所提高。
通过实践的学习,我认到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。
第四篇:《数据结构与算法》课程设计的心得体会
课程设计的心得体会
在两周的学习和实践过程中,通过解决学生搭配问题这一实际问题,让我对循环队列有了更深的了解,对数据结构也产生了更加浓厚的兴趣,同时也是对我解决实际问题能力的一次提升。
记得王教授给我们上课时就要不断的通过走算法的方式,掌握所学习的数据结构、算法等,而上机则能进一步巩固自己所学的知识、提高自己的学习能力。在上机的同时也改正了自己对某些算法的错误使用,使自己能在通过程序解决问题时抓住关键算法,能够很好的够造出解决问题的数据结构、算法的设计思想和流程图,并用C语言描绘出关键算法。
首先对于这次的课程设计题目而言,主要是对队列这一知识点的运用。首先是对问题的分析,明白题目的具体要求,即将现实生活中的舞会搭配问题,用链队列这一数据结构描绘出来。用两个链队列boy和girl分别代表男生和女生,当播放每一首歌曲时,便可使两队各有一元素出队列,这样就可以模拟出搭配情况。同时,由于题目要求系统能模拟动态地显示出上述过程,所以就考虑调用一个延迟函数sleep(),使歌曲之间有一段时间间隔,即模拟了显示中的那一动态过程。其次便是在实现过程中遇到的具体细节问题,比如一开始设计了两个出对函数DeQueue(),让首元素结点出队,然后调用入队函数Add(),使其入队到队尾,但在测试时发现,如果输入的人数为2,那么在到第三首歌曲时程序便会终止;经过分析发现是这两个函数的调用,使数据出错,所以就将这两个出对函数用一个函数change()代替,这个函数能实现将首元素结点移到队尾的功能。这样不仅没有了之前的问题,而且使程序更加易懂。在这些细节方面的具体设计,是对个人分析问题、解决问题能力的一个很好的锻炼。通过这个过程的锻炼,不仅能对所学的知识点有很好的掌握,而且还是对个人能力的很好的训练。
其次,以前我对数据结构(C语言描述)的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对C语言中经常出现的错误也不了解,通过实践,使我在这几个方面的认识有所提高。让自己有一定的能力去改正一些常见的错误语法,很高兴这两周的学习让我对数据结构(C语言描述)有了新的认识,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。在这次课程设计的实验中,我收获了许多知识,通过查找大量资料,请教老师,以及不懈的努力,也培养了独立思考、动手操作的能力。我也学会了许多学习和解决实际问题的方法,让我受益匪浅。课程设计对我来说,趣味性强,不仅锻炼能力,而且可以学到很多东西,在与老师和同学的交流过程中,互动学习,将知识融会贯通,也增强了我和同学之间的团队合作的能力。让我们知道只要努力,集中精力解决问题,一定会有收获的,过程也是很重要的。
在这次课程设计中我们要学会利用时间,在规定的时间内完成我们的任务,要逐渐养成用C语言编写程序的良好习惯。这些对我来说都是一种锻炼,一个知识积累的过程,一种能力的提高。要打好基础,才能用更好的办法,更简洁明了的程序解决实际问题,只有这样才能进一步的取得更好的成绩。我们会更加努力,努力的去弥补自己的缺点,发展自己的优点,去充实自己,只有在了解了自己的长短之后,我们会更加珍惜拥有的,更加努力的去完善它,增进它。
当然我现在的水平还是很有限,但我还会继续努力的,在解决实际问题时如果遇到了难题,我们要学会去查找大量的有关这方面的资料,还要借助于网络不断扩大自己的知识面和阅读量。这样也可以锻炼我们的自主学习能力和解决问题的能力,学到了许多以前没学到的东西。
在课程设计中的程序都比较复杂,所以需要我们要更加地细心,认真的完成每一步的操作,修改语法,按照老师的指导思想来完成。还记得一开始拿到题目时我们的一脸茫然,而现在是收获满满的自信,每个人都或多或少有所收获,也让我们对程序设计和算法有了进一步理解、认识。
第五篇:数据结构与算法课程设计 心得体会 学习体会
课程设计的心得体会
刚一开始抽到题目,我一看觉得无从下手,由于那个时候很多课都还在进行着,也就是抽空思考一下思路,也到图书馆中借了相关的书来参考,但没有进行很深入的研究。课程设计开始的时候,我开始思考我该如何去求解,确定了算法之后,就开始写程序,修改错误,调试,直至完成,在这一过程中,让我学会了很多东西。
在课程设计结束后,我对书本,也就是我们的教材的认识有了很大的提高。以前我觉得能看懂书上的知识,能写出算法就认为自己学的还可以。可是通过课程设计,通过我对书上知识的研究,我发现其实书上有很多东西是我没有领略到的。我的算法的核心思想就是图的深度优先搜索遍历,在用邻接表对图完成存储之后,我就开始仔细的看书上有关图的遍历的知识,包括深度优先搜索遍历和广度优先搜索遍历,就那么几页纸,我看了不知道多少遍。刚一开始看一下,觉得自己会了,然后做程序,遇到问题再拿书看,没看一次我对算法的理解就更进了一步。通过这次课程设计,让我明白了书上的知识看似是很有限的,但它蕴含的东西值得我们去花更多的时间去研究。学知识不能只学表面的知识,做出一个深度优先搜索遍历程序不等于你就掌握了深度优先搜索遍历算法,其他知识也是这样,其他科目的学习也同样是这样。学习要抓住知识的精髓。
在课程设计这两个星期中,让我明白了独立思考的重要性。一个东西只有经过自己的思考,自己明白了才是真的明白了,别人说的再明白不等于我明白。在思考的过程中,我发现对一个问题,你思考的月深入,可以挖掘的东西就越多。我做的题目是分酒问题:三个酒杯,一个能装8kg,一个能装5kg,一个能装3kg,8kg是空的,5kg和3kg是满的,不借助其他工具,最终分出两个4kg。看似无从下手,但经过思考之后我确立了用图来求解,但是怎样抽象成图,抽象成什么样的图,模型确立后,图有很多种存储结构,采用哪一种存储结构是最优的等等问题都要去思考。最终我确定采用邻接表作为存储结构,图的深度优先搜索遍历来求解。
独立思考很重要,跟别人交流也很重要。在我和别人交流的时候,开阔了我的思维空间,很多原先我没想到的东西一下子就蹦出来了,而且能填补我知识的空白。跟老师交流就更重要了,以老师的知识层面和对问题的见解,他的想法具有很强的针对性和可行性。做好程序后,在写实验报告的时候,我发现在写实验报告的过程中,我对我的算法有了更进一步的认识,因为我要写出来,写出来的实验报告不仅我自己能看明白,更关键的是别人能看明白。这样就要求我用简练的语言来描述我的算法,而且对我的语言组织能力也是一次考验。
总之,这次课程设计让我对数据结构有了更深的认识,不仅体现在知识上,还体现在对知识的认识、对学习的认识和对方法的认识。