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