数据结构心得体会_第1页
数据结构心得体会_第2页
数据结构心得体会_第3页
数据结构心得体会_第4页
数据结构心得体会_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据结构心得体会【篇一:数据结构学习总结】数据结构学习总结通过一学期对?数据结构与算法?的学习,大概的了解了根本的数 据结构和相应的一些算法.下面总结一下自己一个学期学习的收获 和心得.数据结构是什么:数据结构是计算机存储、组织数据的方式.数据结构是指相互之间 存在一种或多种特定关系的数据元素的集合.通常情况下,精心选 择的数据结构可以带来更高的运行或者存储效率.数据结构往往同 高效的检索算法和索引技术有关. 数据结构重要性:一般认为,一个数据结构是由数据元素依据某种逻辑联系组织起来 的.对数据元素间逻辑关系的描述称为数据的逻辑结构;数据必须 在计算机内存储,数据的存储结构是数据结构的实现形式

2、,是其在 计算机内的表示;此外讨论一个数据结构必须同时讨论在该类数据 上执行的运算才有意义.一个逻辑数据结构可以有多种存储结构, 且各种存储结构影响数据处理的效率.在许多类型的程序的设计中, 数据结构的选择是一个根本的设计考虑因素.许多大型系统的构造 经验说明,系统实现的困难程度和系统构造的质量都严重的依赖于 是否选择了最优的数据结构.许多时候,确定了数据结构后,算法 就容易得到了.有些时候事情也会反过来,我们根据特定算法来选 择数据结构与之适应.不管哪种情况,选择适宜的数据结构都是非 常重要的.选择了数据结构,算法也随之确定,是数据而不是算法 是系统构造的关键因素.这种洞见导致了许多种软件设

3、计方法和程 序设计语言的出现,面向对象的程序设计语言就是其中之一.常见的数据结构:1 .顺序表:定义:顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构.线性表采 用顺序存储的方式存储就称之为顺序表.顺序表是将表中的结点依 次存放在计算机内存中一组地址连续的存储单元中O根本运算:置表空:sqlsetnull (l)判表满:sqlempty (l)求表长:sqllength(l)插入:sqlinsert (l,i,x) 按序号取元素: sqlget (l,i)删除:sqldelete(l,i)按值查找:sqllocate(l,x)2 .链表定义

4、:链表是一种物理存储单元上非连续、非顺序的存储结构,数 据元素的逻辑顺序是通过链表中的指针链接次序实现的.链表由一 系列结点(链表中每一个元素称为结点)组成,结点可以在运行时 动态生成.每个结点包括两个局部:一个是存储数据元素的数据域, 另一个是存储下一个结点地址的指针域.相比于线性表顺序结构,链表比拟方便插入和删除操作.分类:单链表一用一组地址任意的存储单元存放线性表中的数据元素.循环链表一循环链表是另一种形式的链式存贮结构.它的特点是表 中最后一个结点的指针域指向头结点,整个链表形成一个环.根本运算:建立链表,插入节点,删除节点.3 .堆栈定义:堆栈都是一种数据项按序排列的数据结构,只能在

5、一端(称为栈顶(top)对数据项进行插入和删除.要点:堆:顺序随意栈:后进 先出(last-in/first-out).根本算法:置空栈:initstack (s)判栈空:stackempty (s)判栈满:stackfull (s)取栈顶元素:gettop (s)入栈:push (s) 出栈:pop(s)4 .队列定义:队列是一种特殊的线性表,它只允许在表的前端( front )进 行删除操作,而在表的后端(rear)进行插入操作.进行插入操作的 端称为队尾,进行删除操作的端称为队头.队列中没有元素时,称 为空队列.在队列这种数据结构中,最先插入的元素将是最先被删 除的元素;反之最后插入的元

6、素将最后被删除的元素,因此队列又 称为 先进先出"(fifo-first in first out )的线性表.分类:顺序队列;链队;根本运算:初始化队列 qini (q)入队qadd(q,x) 出队qdel(q,x)判断队列是否为qempty(q) 判断队列是否为满qfull(q)5 .特殊矩阵分类:对阵矩阵;三角矩阵;稀疏矩阵;6 .二叉树定义:二叉树是每个节点最多有两个子树的有序树.通常子树被称作 往子树 (left subtree )和 右子树 (right subtree ).二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒.二

7、叉树的第i层至多有2的i-1次方个结点;深度为k的二叉树至多有2人(k) -1个结点;对任何一棵二 叉树t,如果其终端结点数(即叶子结点数)为n0,度为2的结点数为 n2 ,贝U n0 = n2 + 1.完全二叉树一一假设设二叉树的高度为h,除第h层外,其它各层(1h-1)的结点数都到达最大个数,第 h层有叶子节点,并且叶子 节点都是从左到右依次排布,这就是完全二叉树.(2)满二叉树一一除了叶结点外每一个结点都有左右子叶且叶结点都 处在最底层的二叉树,.深度一一二叉树的层数,就是高度.性质:(1)在二叉树中,第i层的结点总数不超过 2八(i-1);(2)深度为h的二叉树最多有2八h-1个结点(

8、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)为卡特兰数的

9、第 n 项.h(n)=c(n,2*n)/(n+1).(7)设有i个枝点,i为所有枝点的道路长度总和,j为叶的道路长 度总和j=i+2i.二叉树遍历:遍历是对树的一种最根本的运算,所谓遍历二叉树,就是按一定的 规那么和顺序走遍二叉树的所有结点,使每一个结点都被访问一次, 而且只被访问一次.由于二叉树是非线性结构,因此,树的遍历实 质上是将二叉树的各个结点转换成为一个线性序列来表示.设1、d、r分别表示遍历左子树、访问根结点和遍历右子树,那么对一棵二叉树的遍历有三种情况: dlr 称为先根次序遍历,1dr 称 为中根次序遍历,1rd 称为后根次序遍历.1前序遍历 访问根;按前序遍历左子树;按前序遍

10、历右子树2中序遍历按中序遍历左子树;访问根;按中序遍历右子树后序遍历 按后序遍历左子树;按后序遍历右子树;访问根4层次遍历 即根据层次访问,通常用队列来做.访问根,访问 子女,再访问子女的子女越往后的层次越低两个子女的级别 相同.7 .散列定义:假设结构中存在和关键字 k相等的记录,那么必定在fk的存储 位置上.由此,不需比拟便可直接取得所查记录.称这个对应关系f为散列函数hash function,按这个思想建立的表为散列表.散列函数:直接定址法;除留余数法;数字分析法;平方取中法; 折叠法.冲突处理方法:开放地址法线性探测再散列,二次探测 再散列,伪随机探测再散列链地址法.8 .图定义:一

11、种较线性表和树更为复杂的数据结构.存储结构:邻接矩阵;邻接表;逆邻接表;十字链表;邻接多重表.图的遍历:深度优先遍历:深度优先遍历的思想类似于树的先序遍历.其遍历 过程可以描述为:从图中某个顶点v出发,访问该顶点,然后依次从v的未被访问的邻接点出发继续深度优先遍历图中的其余顶点, 直至图中所有与v有路径相通的顶点都被访问完为止.广度优先遍历:对图的广度优先遍历方法描述为:从图中某个顶点 v出发,在访问该顶点v之后,依次访问v的所有未被访问过的邻接 点,然后再访问每个邻接点的邻接点,且访问顺序应保持先被访问 的顶点其邻接点也优先被访问,直到图中的所有顶点都被访问为止.下面是对一个无向图进行广度优

12、先遍历的过程.查找算法1 .顺序查找:在一个无或有序序队列中找出与给定关键字相 同的数的具体位置.原理是让关键字与队列中的数从第一个开始逐 个比拟,直到找出与给定关键字相同的数为止.2 .折半查找:首先,假设表中元素是按升序排列,将表中间位置记 录的关键字与查找关键字比拟,如果两者相等,那么查找成功;否那么 利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于 查找关键字,那么进一步查找前一子表,否那么进一步查找后一子表. 重复以上过程,直到找到满足条件的记录,使查找成功,或直到子 表不存在为止,此时查找不成功.3 .分块查找:先选取各块中的最大关键字构成一个索引表;查找分 两

13、个部分:先对索引表进行二分查找或顺序查找,以确定待查记录在哪一 块中;然后,在已确定的块中用顺序法进行查找.4 .二叉排序树:定义:二叉排序树binary sort tree 又称二叉查找树. 它或者是 一棵空树;或者是具有以下性质的二叉树:1假设左子树不空,那么左子树上所有结点的值均小于它的根结点的值;2假设右子树不空,那么右子树上所有结点的值均大于它的根结点的值;3左、右子树也分别为二叉排序树;查找:假设根结点的关键字值等于查找的关键字,成功.否那么,假设小 于根结点的关键字值,递归查左子树.假设大于根结点的关键字值, 递归查右子树.假设子树为空,查找不成功.排序算法:1 .直接插入排序:

14、插入排序的根本操作就是将一个数据插入到已经 排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算 法适用于少量数据的排序,时间复杂度为on八2.是稳定的排序方法.插入算法把要排序的数组分成两局部:第一局部包含了这个数 组的所有元素,但将最后一个元素除外,而第二局部就只包含这一 个元素.在第一局部排序后,再把这个最后元素插入到此刻已是有 序的第一局部里的位置.2 .希尔排序:先取一个小于 n的整数di作为第一个增量,把文件 的全部记录分成di个组.所有距离为di的倍数的记录放在同一个 组中.先在各组内进行直接插入排序;然后,取第二个增量d2d1重复上述的分组和排序,直至所取的增量dt=1

15、dtdt-l?d2d1,即所有记录放在同一组中进行直接插入排序为止.3 .冒泡排序:依次比拟相邻的两个数,将小数放在前面,大数放在 后面.即在第一趟:首先比拟第 1个和第2个数,将小数放前,大 数放后.然后比拟第 2个数和第3个数,将小数放前,大数放后, 如此继续,直至比拟最后两个数,将小数放前,大数放后.至此第 一趟结束,将最大的数放到了最后.在第二趟:仍从第一对数开始比拟由于可能由于第 2个数和第3个数的交换,使得第1个数不 再小于第2个数,将小数放前,大数放后,一直比拟到倒数第二 个数倒数第一的位置上已经是最大的,第二趟结束,在倒数第 二的位置上得到一个新的最大数其实在整个数列中是第二大

16、的数.如此下去,重复以上过程,直至最终完成排序.4.快速排序:通过一趟排序将要排序的数据分割成独立的两局部,其中一局部的 所有数据都比另外一局部的所有数据都要小,然后再按此方法对 这两局部数据分别进行快速排序,整个排序过程可以递归进行,以 此到达整个数据变成有序序列.5 .直接选择排序:第一次从 r0rn-1中选取最小值,与 r0交换, 第二次从r1rn-1中选取最小值,与r1交换,.第i次从ri-1卜rn-1中选取最小值,与 ri-1交换.第n-1次从rn-2卜rn-1中 选取最小值,与rn-2交换,总共通过n-1次,得到一个按排序码从小 到大排列的有序序列.6 .归并排序:申请空间,使其大

17、小为两个已经排序序列之和,该空 间用来存放合并后的序列;设定两个指针,最初位置分别为两个已 经排序序列的起始位置;比拟两个指针所指向的元素,选择相对小 的元素放入到合并空间,并移动指针到下一位置;重复直到某一指 针到达序列尾;另一序列剩下的所有元素直接复制到合并序列尾. 心得:无论我们学习什么课程,概念永远是根底,所有的知识都是 建立在根底概念之上的.我们要将概念熟记于心,然后构建知识框 架.数据结构包括线性结构、树形结构、图状结构或网状结构.线 性结构包括线性表、栈、队列、串、数组、广义表等,栈和队列是 操作受限的线性表,串的数据对象约束为字符集,数组和广义表是 对线性表的扩展:表中的数据元

18、素本身也是一个数据结构.除了线 性表以外,栈是重点,由于栈和递归紧密相连,递归是程序设计中 很重要的一种工具.树状结构中的重点自然是二叉树和哈弗曼树了. 对于二叉树的很多操作都是基于对二叉树的遍历,掌握了如何遍历, 很多问题也就迎刃而解了,比方对二叉树结点的查找访问、统计二 叉树中叶子结点的数目、求二叉树的深度等.哈弗曼编码也有着很 广泛的应用.对于图状结构,主要学习图的存储结构及图的遍历. 对算法的学习是学习数据结构的关键.要注重对算法的掌握.对于 一个算法,如果我们不是很理解的话,可以手动将算法走一遍,慢 慢理解该算法的思想.学习这门课程的最终目的,还是要学会如何 设计算法,这需要我们长期

19、的练习和思考.【篇二:数据结构学习心得】课程学习总结各元素之间没有直接的关系,散列和冲突处理是散列法中最重要的 两个概念.散列通过某种函数确定节点关键字与节点存储地址之间 的关系.常用的散列函数有直接定址法、除留余数法、数字分析法、 平方取中法和折叠法等.由于散列法的自身特点,冲突的发生是不 可防止的.第十章介绍了图的概念及其应用,是教材的难点.图的存储结构的 知识点有:邻接矩阵、邻接表、逆邻接表、十字链表和邻接多重表. 图的遍历包括图的深度优先搜索遍历和广度优先搜索遍历.其余知 识点有:有向图、连通图、生成树和森林、最短路径问题和有向无 环图及其应用.有向无环图重点理解 aov网和拓扑排序及

20、其算法. 第H一章:略 二、学习体会三、教学建议1、希望平时阶段考核的题目能够根据考研的标准来出,让我们适应 考研的试卷.2、希望老师在讲完每章后,能增加一些随堂小练习,加深我们对每 一章的理解.3、希望老师到下课的时候能准时下课,听这门课真得很费脑力,给 我们一点休息的时间.以上是我对?数据结构与算法?这门课程所作的课程总结.虽然这 门课程结束了,但是,我还有很多内容没有掌握牢固,我会继续努 力的.【篇三:数据结构课程设计心得体会】数据结构课程设计心得体会经过一个星期的课程设计,过程曲折可谓一语难尽.整天都是对着 电脑,不然就是翻阅资料.在此期间我失落过,也曾一度热情高涨. 点点滴滴令我回味

21、无长.这次课程设计使我体会到只有做到细心耐 心,恒心才能做好事情.这次的课程设计,增强了我们动手、思考和解决问题的水平.稳固 和加深了对数据结构的理解,提升综合运用本课程所学知识的水平. 培养了我选用参考书,查阅手册及文献资料的水平.培养独立思考, 深入研究,分析问题、解决问题的水平.通过实际编译系统的分析 设计、编程调试,掌握应用软件的分析方法和工程设计方法.通过 课程设计,培养了我严肃认真的工作作风,逐步建立正确的生产观 念、经济观念和全局观念.而且做课程设计同时也是对课本知识的 稳固和增强,平时看课本时,有些问题就不是很能理解,做完课程 设计,那些问题就迎刃而解了.而且还可以记住很多东西.熟悉来 源于实践,实践是熟悉的动力和最终目的,实践是检验真理的唯一 标准.所以这个期末测试之后的课程设计对我们的作用是非常大的. 这次的课程设计使我懂得了理论与实际相结合是很非常重要的,只 有理论知识是远远不够的,只有把所学的理论知识与实践相结合起 来,从理论中得出结论,才能真正为社会效劳,从而提升自己的实 际动手水平和独立思考的水平.在

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论