数据结构心得体会
第1篇:数据结构心得体会
Experience The data structure design subject, it needs to change the theory to the computer debugging.At the beginning of the first leon of the subject, Mr.Lu explained the importance of it for us.It has some difficulty for us.It is a basic subject of other programming languages.Many students say that the data structure is not good to learn, I deeply understand this.When I first started learning, there were a lot of places I didn't understand.Every time I was in cla, the teacher gave us different design questions.It was a big challenge for us as a beginner.I remember walking through the contents of two trees in a cla, preorder, preorder, and preorder.Teacher Lu said, "the content of this leon is very important.No matter whether you have understood it or not, listen carefully now.".To tell the truth, I didn't really understand what I had done before, but I listened to the teacher carefully.Preorder traversal is very simple, is the three traversal, the simplest.And in order to traverse, listen to a little fuzzy, after the order traversal, also half understand, half understand, I thought, if the teacher once again, I certainly can understand.Later, the teacher drew a two tree, smoked the students to the blackboard sorting, this two fork tree seems complex, but with first order traversal to row, not difficult.So I lined up in the following, first order, first order traversal, very simple, I am a little complacent, the teacher to the location of the point, I went up the row in the order, go up after a row in a me.Then the teacher spoke again, I just understand, Lu teacher and aured us that the two tree is hard, the order and post order are not good, want to learn that we sort, and ask the students to row out respectively, the teacher also had my name, call me up in order to distinguish the two row row which students answer correctly, I did not hesitate to answer.Because of this content, the first traversal of the two fork tree, the sequence traversal two fork tree, after the order traversal two fork tree, I really understand, for the first time on this cla so succeful sense.Gradually interested in the course.I thought I would never understand the leon.Now I see, and if I listen carefully and try my best, this leon is not difficult.The degree of difficulty of data structure learning depends largely on personal interest.It's painful to make a task as a task, and it will be fun to do it.Also hope that the teacher can see my change, in this also thank the teacher's hard teaching.The teacher did not give up on me, several times my name go up, the teacher must see my progre.Later, I listened carefully every cla, although the teacher did not call the roll, but I still listened very seriously.The parents expre the children and the children and the brothers.I can understand them very well.I listen to the lectures almost every cla.Sometimes I also take claes in my spare time to read what I've been doing before.So, when I first read the textbooks, I memorize the concepts in mind, and then build a knowledge framework.The data structure includes linear structure, tree structure, graph structure or network structure.Linear structure including linear list, stack, queue, string, array, generalized list, stack and queue is a linear scale is limited, the data object constraint string for character set, and an array of generalized list of linear table: data element in the table is a data structure.In addition to linear tables, the stack is the focus, because the stack is closely related to recursion, and recursion is an important tool in programming.I've learned that Stack is a special linear list that can only be inserted and deleted at one end.It stores data in accordance with the principle of "first in, first out".The incoming data is pushed to the bottom of the stack, and the last data pops up from the top of the stack at the top of the stack when it is neceary to read data;A special linear table that allows only deleting operations at the front of the table(front)and inserting operations at the back of the table(rear).The inserted operation end is called the queue tail, and the deleted operation end is called the header.When there is no element in the queue, it is called an empty queue.The list is a discontinuous and non sequential storage structure on the physical storage unit, and the logical order of the data elements is achieved by the order of pointer linking in the linked list.A linked list consists of a series of nodes that can be dynamically generated at run time.Each node consists of two parts: one is the data domain that stores the data elements, and the other is the pointer domain that stores the addre of the next node.Think oneself enter oneself for an examination of the profeional, but also the data structure of this gate, this semester is over, more or le have gained some knowledge.Although the study is not very thorough, I believe that this will help a lot of self exams, so even if I finish the subject, I will not give up learning it.
第2篇:数据结构心得体会
心得体会
数据结构是一门纯属于设计的科目,它需用把理论变为上机调试。在学习科目的第一节课起,鲁老师就为我们阐述了它的重要性。它对我们来说具有一定的难度。它是其它编程语言的一门基本学科。很多同学都说,数据结构不好学,这我深有体会。刚开始学的时候确实有很多地方我很不理解,每次上课时老师都会给我们出不同的设计题目,对于我们一个初学者来说,无疑是一个具大的挑战。
我记得有节课上遍历二叉树的内容,先序遍历、中序遍历、后序遍历。鲁老师说:这节课的内容很重要,不管你以前听懂没有,现在认真听。说实在的,以前上的内容确实没大听懂,不过听了老师的话,我听得很认真。先序遍历很简单,是三个遍历中,最简单的。而中序遍历听得有点模糊,后序遍历也半懂半懂,我心想如果老师再讲一遍,我肯定能听懂。后来老师画了一个二叉树,抽了同学到黑板上去排序,这个二叉树看似复杂,不过用先序遍历来排,并不难。于是我在下面排好了先序,先序遍历很简单,我有点得意,老师到位置上点了我上去排中序,上去之后排得一塌糊涂。后来老师又讲了一遍,我这才听懂了,鲁老师又安慰我们说,这个二叉树有点难,中序和后序都不好排,要学懂的确要花点功夫才行。我听了老师的话,认真做了笔记,回去再看了当天学的内容。第二堂课,老师还是先讲的先前的内容,画了一个简单的二叉树,让我们排序,又叫同学上去分别排出来,老师又点了我的名,叫我起来辨别排中序那两个同学的答案哪个排正确了,我毫不犹豫的答对了。因为这次的内容,先序遍历二叉树、中序遍历二叉树、后序遍历二叉树,我的确真的懂了,第一次上这个课这么有成就感。渐渐的对这门课有了兴趣。我以为永远都听不懂这个课,现在,我明白了,只要认真听,肯下功夫,这个课也没有什么难的。而数据结构学习的难易程度很大程度上决定于个人的兴趣,把一件事情当做任务去做会很痛苦,当做兴趣去做会很快乐。也希望老师能看到我的改变,在此也感谢老师的辛勤教导。老师没有放弃我,几次点我的名上去,老师一定看得到我的进步。
后来,我每节课都认真听课,老师虽然没有点名,但我还是很认真的听。双亲表示法孩子表示法和孩子兄弟表示法,这些内容我都听得很明白,差不多每节课都认真听课。有时我也会在上课空余时间看看以前的内容,所以,第一遍看课本的时候要将概念熟记于心,然后构建知识框架。数据结构包括线性结构、树形结构、图状结构或网状结构。线性结构包括线性表、栈、队列、串、数组、广义表等,栈和队列是操作受限的线性表,串的数据对象约束为字符集,数组和广义表是对线性表的扩展:表中的数据元素本身也是一个数据结构。除了线性表以外,栈是重点,因为栈和递归紧密相连,递归是程序设计中很重要的一种工具。
其中我了解到:栈(Stack)是只能在某一端插入和删除的特殊线性表。它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据;队列一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入的操作端称为队尾,进行删除的操作端称为队头。队列中没有元素时,称为空队列;链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。
想着自己报考自考的专业,也会考数据结构这门,这学期就结束了,或多或少都收获了一些知识。尽管学得还不是很透彻,我相信这对自己的自考会有很大的帮助,所以,即使是结束了这科的内容,我也不会放弃去学习它。
第3篇:数据结构心得体会
数据结构心得体会
【篇1:数据结构学习总结】
数据结构学习总结
通过一学期对《数据结构与算法》的学习,大概的了解了基本的数据结构和相应的一些算法。下面总结一下自己一个学期学习的收获和心得。数据结构是什么:
数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。数据结构重要性:
一般认为,一个数据结构是由数据元素依据某种逻辑联系组织起来的。对数据元素间逻辑关系的描述称为数据的逻辑结构;数据必须在计算机内存储,数据的存储结构是数据结构的实现形式,是其在计算机内的表示;此外讨论一个数据结构必须同时讨论在该类数据上执行的运算才有意义。一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率。在许多类型的程序的设计中,数据结构的选择是一个基本的设计考虑因素。许多大型系统的构造经验表明,系统实现的困难程度和系统构造的质量都严重的依赖于是否选择了最优的数据结构。许多时候,确定了数据结构后,算法就容易得到了。有些时候事情也会反过来,我们根据特定算法来选择数据结构与之适应。不论哪种情况,选择合适的数据结构都是非常重要的。选择了数据结构,算法也随之确定,是数据而不是算法是系统构造的关键因素。这种洞见导致了许多种软件设计方法和程序设计语言的出现,面向对象的程序设计语言就是其中之一。
常见的数据结构: 1.顺序表:
定义:顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构。线性表采用顺序存储的方式存储就称之为顺序表。顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中。
基本运算:
置表空:sqlsetnull(l)判表满:sqlempty(l)
求表长:sqllength(l)插入:sqlinsert(l,i,x)按序号取元素:sqlget(l,i)删除:sqldelete(l,i)按值查找:sqllocate(l,x)2.链表
定义:链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。相比于线性表顺序结构,链表比较方便插入和删除操作。分类:单链表—用一组地址任意的存储单元存放线性表中的数据元素。
循环链表—循环链表是另一种形式的链式存贮结构。它的特点是表中最后一个结点的指针域指向头结点,整个链表形成一个环。基本运算:建立链表,插入节点,删除节点。3.堆栈
定义:堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。要点:堆:顺序随意栈:后进先出(last-in/first-out)。
基本算法:
置空栈:initstack(s)判栈空:stackempty(s)
判栈满:stackfull(s)取栈顶元素:gettop(s)
入栈:push(s)出栈:pop(s)4.队列
定义:队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。在队列这种数据结构中,最先插入的元素将是最先被删除的元素;反之最后插入的元素将最后被删除的元素,因此队列又称为“先进先出”(fifo—first in first out)的线性表。
分类:顺序队列;链队;
基本运算:初始化队列 qini(q)入队 qadd(q,x)
出队 qdel(q,x)判断队列是否为qempty(q)
判断队列是否为满qfull(q)5.特殊矩阵
分类:对阵矩阵;三角矩阵;稀疏矩阵; 6.二叉树 定义:二叉树是每个节点最多有两个子树的有序树。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2的 i-1次方个结点;深度为k的二叉树至多有2^(k)-1个结点;对任何一棵二叉树t,如果其终端结点数(即叶子结点数)为n0,度为2的结点数为n2,则n0 = n2 + 1。
(1)完全二叉树——若设二叉树的高度为h,除第 h 层外,其它各层(1~h-1)的结点数都达到最大个数,第 h 层有叶子节点,并且叶子节点都是从左到右依次排布,这就是完全二叉树。
(2)满二叉树——除了叶结点外每一个结点都有左右子叶且叶结点都处在最底层的二叉树,。
(3)深度——二叉树的层数,就是高度。
性质:
(1)在二叉树中,第i层的结点总数不超过2^(i-1);
(2)深度为h的二叉树最多有2^h-1个结点(h=1),最少有h个结点;(3)对于任意一棵二叉树,如果其叶结点数为n0,而度数为2的结点总数为n2,则n0=n2+1;
(4)具有n个结点的完全二叉树的深度为int(log2n)+1
(5)有n个结点的完全二叉树各结点如果用顺序方式存储,则结点之间有如下关系: 若i为结点编号则 如果i1,则其父结点的编号为i/2;如果2*i=n,则其左儿子(即左子树的根结点)的编号为2*i;若2*in,则无左
儿子;如果2*i+1=n,则其右儿子的结点编号为2*i+1;若2*i+1n,则无右儿子。
(6)给定n个节点,能构成h(n)种不同的二叉树。h(n)为卡特兰数的第n项。h(n)=c(n,2*n)/(n+1)。
(7)设有i个枝点,i为所有枝点的道路长度总和,j为叶的道路长度总和j=i+2i。
二叉树遍历:
遍历是对树的一种最基本的运算,所谓遍历二叉树,就是按一定的规则和顺序走遍二叉树的所有结点,使每一个结点都被访问一次,而且只被访问一次。由于二叉树是非线性结构,因此,树的遍历实质上是将二叉树的各个结点转换成为一个线性序列来表示。设l、d、r分别表示遍历左子树、访问根结点和遍历右子树,则对一棵二叉树的遍历有三种情况:dlr(称为先根次序遍历),ldr(称为中根次序遍历),lrd(称为后根次序遍历)。
(1)前序遍历 访问根;按前序遍历左子树;按前序遍历右子树(2)中序遍历按中序遍历左子树;访问根;按中序遍历右子树(3)后序遍历 按后序遍历左子树;按后序遍历右子树;访问根
(4)层次遍历 即按照层次访问,通常用队列来做。访问根,访问子女,再访问子女的子女(越往后的层次越低)(两个子女的级别相同)。7.散列
定义:若结构中存在和关键字k相等的记录,则必定在f(k)的存储位置上。由此,不需比较便可直接取得所查记录。称这个对应关系f为散列函数(hash function),按这个思想建立的表为散列表。
散列函数:直接定址法;除留余数法;数字分析法;平方取中法;折叠法。冲突处理方法:开放地址法(线性探测再散列,二次探测再散列,伪随机探测再散列)链地址法。8.图
定义:一种较线性表和树更为复杂的数据结构。存储结构:邻接矩阵;邻接表;逆邻接表;十字链表;邻接多重表。图的遍历:
深度优先遍历:深度优先遍历的思想类似于树的先序遍历。其遍历过程可以描述为:从图中某个顶点v出发,访问该顶点,然后依次从v的未被访问的邻接点出发继续深度优先遍历图中的其余顶点,直至图中所有与v有路径相通的顶点都被访问完为止。
广度优先遍历:对图的广度优先遍历方法描述为:从图中某个顶点v出发,在访问该顶点v之后,依次访问v的所有未被访问过的邻接点,然后再访问每个邻接点的邻接点,且访问顺序应保持先被访问的顶点其邻接点也优先被访问,直到图中的所有顶点都被访问为止。下面是对一个无向图进行广度优先遍历的过程。
查找算法
1.顺序查找:在一个已知无(或有序)序队列中找出与给定关键字相同的数的具体位置。原理是让关键字与队列中的数从第一个开始逐个比较,直到找出与给定关键字相同的数为止。
2.折半查找:首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位 置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。
3.分块查找:先选取各块中的最大关键字构成一个索引表;查找分两个部
分:先对索引表进行二分查找或顺序查找,以确定待查记录在哪一块中;然后,在已确定的块中用顺序法进行查找。4.二叉排序树:
定义:二叉排序树(binary sort tree)又称二叉查找树。它或者是一棵空树;或者是具有下列性质的二叉树:(1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;(2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值;(3)左、右子树也分别为二叉排序树;
查找:若根结点的关键字值等于查找的关键字,成功。否则,若小于根结点的关键字值,递归查左子树。若大于根结点的关键字值,递归查右子树。若子树为空,查找不成功。
排序算法:
1.直接插入排序:插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为o(n^2)。是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素除外,而第二部分就只包含这一个元素。在第一部分排序后,再把这个最后元素插入到此刻已是有序的第一部分里的位置。
2.希尔排序:先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为d1的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2d1重复上述的分组和排序,直至所取的增量dt=1(dtdt-l?d2d1),即所有记录放在同一组中进行直接插入排序为止。
3.冒泡排序:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排序。4.快速排序:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对 这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
5.直接选择排序:第一次从r[0]~r[n-1]中选取最小值,与r[0]交换,第二次从r{1}~r[n-1]中选取最小值,与r[1]交换,....第i次从r[i-1]~r[n-1]中选取最小值,与r[i-1]交换.....第n-1次从r[n-2]~r[n-1]中选取最小值,与r[n-2]交换,总共通过n-1次,得到一个按排序码从小到大排列的有序序列。
6.归并排序:申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列;设定两个指针,最初位置分别为两个已经排序序列的起始位置;比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置;重复直到某一指针达到序列尾;另一序列剩下的所有元素直接复制到合并序列尾。
心得:无论我们学习什么课程,概念永远是基础,所有的知识都是建立在基础概念之上的。我们要将概念熟记于心,然后构建知识框架。数据结构包括线性结构、树形结构、图状结构或网状结构。线性结构包括线性表、栈、队列、串、数组、广义表等,栈和队列是操作受限的线性表,串的数据对象约束为字符集,数组和广义表是对线性表的扩展:表中的数据元素本身也是一个数据结构。除了线性表以外,栈是重点,因为栈和递归紧密相连,递归是程序设计中很重要的一种工具。树状结构中的重点自然是二叉树和哈弗曼树了。对于二叉树的很多操作都是基于对二叉树的遍历,掌握了如何遍历,很多问题也就迎刃而解了,比如对二叉树结点的查找访问、统计二叉树中叶子结点的数目、求二叉树的深度等。哈弗曼编码也有着很广泛的应用。对于图状结构,主要学习图的存储结构及图的遍历。对算法的学习是学习数据结构的关键。要注重对算法的掌握。对于一个算法,如果我们不是很理解的话,可以手动将算法走一遍,慢慢理解该算法的思想。学习这门课程的最终目的,还是要学会如何设计算法,这需要我们长期的练习和思考。【篇2:数据结构学习心得】
课 程 学习总 结
各元素之间没有直接的关系,散列和冲突处理是散列法中最重要的两个概念。散列通过某种函数确定节点关键字与节点存储地址之间的关系。常用的散列函数有直接定址法、除留余数法、数字分析法、平方取中法和折叠法等。由于散列法的自身特点,冲突的发生是不可避免的。
第十章介绍了图的概念及其应用,是教材的难点。图的存储结构的知识点有:邻接矩阵、邻接表、逆邻接表、十字链表和邻接多重表。图的遍历包括图的深度优先搜索遍历和广度优先搜索遍历。其余知识点有:有向图、连通图、生成树和森林、最短路径问题和有向无环图及其应用。有向无环图重点理解aov网和拓扑排序及其算法。
第十一章:略
二、学习体会
1、希望平时阶段考核的题目能够按照考研的标准来出,让我们适应考研的试卷。
2、希望老师在讲完每章后,能增加一些随堂小练习,加深我们对每一章的理解。
3、希望老师到下课的时候能准时下课,听这门课真得很费脑力,给我们一点休息的时间。
以上是我对《数据结构与算法》这门课程所作的课程总结。虽然这门课程结束了,但是,我还有很多内容没有掌握牢固,我会继续努力的。
【篇3:数据结构 课程设计 心得体会】
数据结构 课程设计 心得体会
经过一个星期的课程设计,过程曲折可谓一语难尽。整天都是对着电脑,不然就是翻阅资料。在此期间我失落过,也曾一度热情高涨。点点滴滴令我回味无长。这次课程设计使我体会到只有做到细心耐心,恒心才能做好事情。
这次的课程设计,加强了我们动手、思考和解决问题的能力。巩固和加深了对数据结构的理解,提高综合运用本课程所学知识的能力。培养了我选用参考书,查阅手册及文献资料的能力。培养独立思考,深入研究,分析问题、解决问题的能力。通过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。通过课程设计,培养了我严肃认真的工作作风,逐步建立正确的生产观念、经济观念和全局观念。而且做课程设计同时也是对课本知识的巩固和加强,平时看课本时,有些问题就不是很能理解,做完课程设计,那些问题就迎刃而解了。而且还可以记住很多东西。认识来源于实践,实践是认识的动力和最终目的,实践是检验真理的唯一标准。所以这个期末测试之后的课程设计对我们的作用是非常大的。这次的课程设计使我懂得了理论与实际相结合是很非常重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在整个设计过程中,构思是很花费时间的。调试时经常会遇到这样那样的错误,有的是因为粗心造成的语法错误。当然,很多也时用错了方法,总是实现不了。同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
根据我在课程设计中遇到得问题,我将在以后的学习过程中注意以下几点:
1、认真上好专业实验课,多在实践中锻炼自己。 2、写程序的过程中要考虑周到,严密。
3、在做设计的时候要有信心,有耐心,切勿浮躁。
4、认真的学习课本知识,掌握课本中的知识点,并在此基础上学会灵活运
用。
5、在课余时间里多写程序,熟练掌握在调试程序的过程中所遇到的常见错
误,以便能节省调试程序的时间。
每个实验通常都要花费很久的时间才能理清一个程序的思路,而且要不断的调试程序才能把程序调试正确,同时还要做到界面的输出也是需要美化的。这次课程设计终于顺利完成了,在设计中遇到了很多专业知识问题,最后在老师的辛勤指导下,也完成了课程设计。
通过这次的课程设计,让我更加了解到数据结构的重要性。以及它对我们专业的发展发挥的作用。对我们而言,知识上的收获很重要,但精神上的丰收更加可喜。让我知道了学无止境的道理。我们每一个人永远不能满足于现有的成就,人生就像在爬山,一座山峰的后面还有更高的山峰在等着你。挫折是一份财富,经历是一份拥有。这次课程设计必将成为我人生旅途上一个非常美好的回忆!同时在做课程设计时要能够从多方面去考虑,去研究,用多种算法去实现要求。此次课程设计,学到了很多课内学不到的东西,比如独立思考解决问题,出现差错的随机应变,这些都让我受益非浅,今后的制作应该能够更轻松,自己也都能够解决并高质量的完成项目。
第4篇:数据结构心得体会(材料)
数据结构学习体会及教学建议
时间过的很快,一转眼一学期的数据结构课程就已经快要告一段落了,在接触这么课以前,我觉得编程无非就是会写代码就好了。然而事实上数据结构对于程序来说,有着非常重要的地位。随着计算机应用领域的不断扩大,非数值计算的问题占据了当今计算机应用的绝大部分,简单的数据类型已经远远不能满足需要,个数据元素之间的复杂关系已经不是普通数学方程式能够表达的了,所以数据结构就扮演了十分重要的角色。在学期初,我觉得数据结构还是比较简单的,但可能由于之前c语言学习对指针掌握的不够熟练,导致在数据结构中接触到与指针有关的问题,例如线性表,堆栈,队列,二叉树等问题的时候,都会显得有些吃力。但是在不断学习数据结构的过程中我也不断加强了对指针的学习,现在我已经能够基本掌握指针的相关知识并且能够熟练运用了。这一学期的学习下来我发现想要学好数据结构有以下几点经验{虽然可能我的数据结构学的并不是很好} 1.初步了解算法思想、原理
想要弄清楚一个算法的实现,首先要知道这个算法的大致原理,这是最简单的一步,也是最基础的一步,只有明白算法想要干什么,才能弄清楚相应的代码段是为什么 2.钻研课本代码段
对于书上的算法代码,我们一定要仔细钻研每一步的具体含义和目的,在此基础上深入的了解算法的实现过程,而不是一味的四级硬背,不仅无聊,而且效率低下。3.查找各种算法资料
例如排序算法,其实历史上有很多不同的排序算法,书上只列举出了一部分,我们通过查阅资料可以发现很多其他不同的排序算法,而且就算是同一个算法,也有很多不同的实现方法,这个过程是一个十分有趣的过程,同时也增长了自己的知识储备,我们可以根据已有的知识储备,从而稍加创新,对某个算法可以有自己不同的见解,从而写出一个“自己”的算法。这对于数据结构的学习是十分重要的 4.坚持上级操作,用实践检验
和所有计算机相关知识的学习一样,数据结构也是一项需要动手的课程,一味的学习书本知识,埋头拿笔演算,还不如在电脑上把代码敲进去自己亲自跑一遍,只有这样才能够最直接最深入的了解一个代码,这也是我这个学期也来最深刻的感受。只有多动手,才能找到写代码的感觉,才能将各种算法烂熟于心。5.勤于练习,寻找感觉
算法是为了问题服务的,我们在掌握了书本上的算法以后,要去找一些综合性的题目来锻炼自己,这些问题通常融合了不同的知识点,例如同时蕴含了排序,二叉树,堆栈的相关知识,只有在解决问题的过程中,灵活运用所学知识,才能真正检验我们是否牢固掌握了书本上的内容。教学建议: 其实李老师您是我大学以来第一个普通话如此标准的老师,所以我已经十分庆幸了,而且我觉得您的讲课思路严谨,只不过有的时候,您似乎刻意追求语句的严谨性,逻辑性,科学性,导致课堂上一句话往往说的很长,很绕,慢慢的都是专业名词,有时候还稍有些舌头打结,这会让我们的思绪无法连贯。比如有一次我在qq上问您希尔排序里面的gap这个点,您给我发了一段26秒的语音,然后我听了好多遍理了好多次思绪才想明白,当然了这可能和我自己的理解能力较弱有关。我希望老师上课的时候能够尽量把内容说的再通俗易懂简单粗暴一些。
以上学习经验以及教学建议仅仅是个人观点,老师您教的已经很好了,是我的水平不够,如有得罪还望见谅
