【关键字】心得
数据结构查找实验心得体会
篇一:数据结构实训心得体会
这次课程设计的心得体会通过实习我的收获如下1、巩固和加深了对数据结构的理解,提高
综合运用本课程所学知识的能力。2、培养了我选用参考书,查阅手册及文献资料的能力。培
养独立思考,深入研究,分析问题、解决问题的能力。3、通过实际编译系统的分析设计、编
程调试,掌握应用软件的分析方法和工程设计方法。4、通过课程设计,培养了我严肃认真的
工作作风,逐步建立正确的生产观念、经济观念和全局观念。从刚开始得觉得很难,到最后
把这个做出来,付出了很多,也得到了很多,以前总以为自己对编程的地方还不行,现在,
才发现只要认真做,没有什么不可能。 编程时要认真仔细,出现错误要及时找出并改正,(其中对英语的要求也体现出来了,因
1文档收集于互联网,已整理,word版本可编辑.
为它说明错误的时候都是英语)遇到问题要去查相关的资料。反复的调试程序,最好是多找
几个同学来对你的程序进行调试并听其对你的程序的建议,在他们不知道程序怎么写的时候
完全以一个用户的身份来用对你的用户界面做一些建议,正所谓当局者迷旁观者清,把各个
注意的问题要想到;同时要形成自己的编写程序与调试程序的风格,从每个细节出发,不放
过每个知识点,注意与理论的联系和理论与实践的差别。另外,要注意符号的使用,注意对
字符处理,特别是对指针的使用很容易出错且调试过程是不会报错的,那么我们要始终注意
指针的初始化不管它怎么用以免不必要麻烦。 通过近两周的学习与实践,体验了一下离开课堂的学习,也可以理解为一次实践与理论
的很好的连接。特别是本组所做的题目都是课堂上所讲的例子,在实行之的过程中并不是那
么容易事让人有一种纸上谈兵的体会,正所谓纸上得来终觉浅绝知此事要躬行。实训
2文档收集于互联网,已整理,word版本可编辑.
过程中
让我们对懂得的知识做了进一步深入了解,让我们的理解与记忆更深刻,对不懂的知识与不
清楚的东西也做了一定的了解,也形成了一定的个人做事风格。通过这次课程设计,让我对一个程序的数据结构有更全面更进一步的认识,根据不同的
需求,采用不同的数据存储方式,不一定要用栈,二叉树等高级类型,有时用基本的一维数
组,只要运用得当,也能达到相同的效果,甚至更佳,就如这次的课程设计,通过用for的
多重循环,舍弃多余的循环,提高了程序的运行效率。在编写这个程序的过程中,我复习了
之前学的基本语法,哈弗曼树最小路径的求取,哈弗曼编码及译码的应用范围,程序结构算
法等一系列的问题它使我对数据结构改变了看法。在这次设计过程中,体现出自己单独设计
模具的能力以及综合运用知识的能力,体会了学以致用、突出自己劳动成果的喜悦心情,也
3文档收集于互联网,已整理,word版本可编辑.
从中发现自己平时学习的不足和薄弱环节,从而加以弥补。篇二:数据结构试验心得数据结构课程设计心得体会(专业:计算机科学与技术 姓名:朱文 学号:XX2XX7) 通讯录管理系统是基于双向循环链表设计而成的信息管理系统。该系统通过对程序进行
模块化,建立添加、显示、查找和删除功能的函数,各函数中运用双向循环链表存储数据。
为存储通讯录信息,需定义一个结构体类型,成员包括姓名、街道、城市、邮编、国家等,
并建立双向循环链表,定义该结构体类型的指针,用于指向各结点。分别建立具有添加、删
除、修改、查询等功能的子函数,完成相应功能,对程序实现模块化。这其中要用到对链表
的删除、拔出等知识。为实现存储功能,需用到文件的相关函数开发一个通讯录管理系统,借助计算机可以方便、快捷、灵活的管理个人的朋友及相关
人员的通讯信息,了解友人相关信息,帮助与友人保持联络。所以设计一个通讯录管理系统
管理各人的通讯信息是非常必要的,同时,通过用循环双向链表设计通讯录管理系统可以让
4文档收集于互联网,已整理,word版本可编辑.
我们更好的去理解循环双向链表,更好的学好数据结构这门课程。 本次实验中,我们使用分工合作的方式,首先定义了函数的结构体部分,剩下的根据函
数所要实现的功能进行分工合作,我实现的是通讯录中删除功能的子函数,删除信息(void
delete(dnode *head))的功能是按照用户输入的姓名首先进行按姓名查询功能,查找成功,
则执行删除信息的功能,查询不成功,则提示错误信息。定义结点p,输入要删除的信息的
姓名,按姓名查找结点,如果找到匹配的结点p,就进行相关的删除操作,否则就是没找到
要删除的数据,最后返回到主函数。这次实验中我深刻认识到合作的重要性。例如:我所编写的按名删除功能的实现中,应
用了章林霞同学所编写写的按名搜索查询功能的那部分函数,在这次实验中,我学到很多东
西,加强了我的动手能力,并且培养了我的独立思考能力。我们坚持理论联系实际的思想,
以实践证实理论,从实践中加深对理论知识的理解和掌握。实验是我们快速认识和掌
5文档收集于互联网,已整理,word版本可编辑.
握理论
知识的一条重要途径。
通过这次课程设计,我们对c语言以及数据结构有了更深刻的了解,增强了程序的编写
能力,巩固了专业知识,对程序的模块化观念也又模糊逐渐变的清晰了。在程序的运行与调
试过程中出现了很多错误,通过反复地复习课本上的相关知识,不停地修改与调试,我们终
于完成了这段程序。在调试过程中,我们认识到了数据结构的灵活性与严谨性,同一个功能
可以由不同的语句来实现,但编写程序时要特别注意细节方面的问题,因为一个小小的疏忽
就能导致整个程序不能运行。我们也认识到了自己的薄弱之处,如对链表相关知识的欠缺,
文件运用的不熟练,在以后的学习中我们要集中精力、端正态度,争取把知识学得更扎实、
更全面。
6文档收集于互联网,已整理,word版本可编辑.
经过这次的实验,我们整体对各个方面都得到了不少的提高,希望以后学校和系里能够
开设更多类似的实验,能够让我们得到更好的锻炼。也让我们深深感受到讨论交流很重要,
遇到困难时,大家一起讨论,加强我们的团队合作精神,同时通过这次的课程设计,我们对数据结构中双向链表结构有了更深刻的理解。篇三:数据结构综合实验心得体会心得体会:
做了一个星期的程序设计终于做完了,在这次程序设计课中,真是让我获益匪浅。 对大
一学习的c语言和这学期开的数据结构,并没有掌握,很多知识都不太懂,突然让自己独立
完成一个程序让我手忙脚乱,起码在我认为那真的特别难,看了老师给的题目以及上网查找
了一些相关的知识,简单的编了几行就告一段落了,第一天等于只完成了老师要求写的需求
分析和概要设计,后来查找了关于哈希表的相关知识,了解了如何创建哈希表,如何合适的
7文档收集于互联网,已整理,word版本可编辑.
构建哈希函数,(选取合适的表长,合适的余数,使得查找时间以及平均查找长度最短)以及
什么是除留余数法,和怎样用除留余数法创建哈希表,看懂了之后,我又看了处理冲突的方
法,有三种线性探测再散列法法,二次探测再散列法,伪随机数序列法三种,而我所要做的
是第一种线性探测再散列的方法,相较后两种要简单很多,在遇到冲突的时候地址加一,知
道冲突解决。
在了解这些概念以后,我就开始着手编程序了,在遇到问题的时候请教我们班擅长的同
学,慢慢把不能不会不理解的地方给弄明白了,在经过很多次调试以后,一些基本功能已经
可以实现了,为了使平均查找长度越小越好,我不断尝试新的表长以及除数,在没有出现错
误的基础上,将功能实现,最后,终于在周四的时候将所有的程序调试完全。这次的综合性实验使我了解到,平时对知识的积累相当重要,同时也要注重课上老师的
8文档收集于互联网,已整理,word版本可编辑.
讲解,老师在课上的延伸是课本上所没有的,这些知识对于我们对程序的编写有很大的作用,
同时,编程也要求我们有足够的耐心,细细推敲。越着急可能就越无法得到我们想要的结果,
遇到不会的问题要多多请教,知识是在实践与向别人请教的过程中积累的,所以问是至关重
要的,只要肯下功夫很多东西都是可以完成的。篇四:数据结构实验报告及心得体会XX~XX第一学期数据结构实验报告 班级:信管一班
学号:XX51018 姓名:史孟晨 实验报告题目及要求
一、实验题目
设某班级有m(6)名学生,本学期共开设n(3)门课程, 要求实现并修改如下程 序(算
法)。
1. 输入学生的学号、姓名和 n 门课程的成绩(输入提示和输出显示使用汉字系统), 输出实验结果 。(15分)
2. 计算每个学生本学期 n 门课程的总分,输出总分和n门课程成绩排在前 3 名学生的学号、姓名和成绩。
9文档收集于互联网,已整理,word版本可编辑.
3. 按学生总分和 n 门课程成绩关键字升序排列名次,总分相同者同名次。
二、实验要求
1.修改算法。将奇偶排序算法升序改为降序。(15分)
2.用选择排序、冒泡排序、拔出排序分别替换奇偶排序算法,并将升序算法修改为 降序算法;。(45分))
3.编译、链接以上算法,按要求写出实验报告(25)。
4. 修改后算法的所有语句必须加下划线,没做修改语句保持按原样不动。 5.用a4纸
打印输出实验报告。
三、实验报告说明
实验数据可自定义,每种排序算法数据要求均不重复。 (1) 实验题目:《n门课程学
生成绩名次排序算法实现》;
(2) 实验目的:掌握各种排序算法的基本思想、实验方法和验证算法的准确性; (3)
实验要求:对算法进行上机编译、链接、运行; (4) 实验环境(windows xp-sp3,visual
10文档收集于互联网,已整理,word版本可编辑.
c++); (5) 实验算法(给出四种排序算法修改后的全部清单); (6) 实验结果(四种
排序算法模拟运行后的实验结果); (7) 实验体会(文字说明本实验成功或不足之处)。
三、实验源程序(算法)
#include #include #define m 6 #define n 3 struct student
{ char name[10]; int number; int score[n+1]; /*score[n]为总分,score[0]-score[2]为学科成绩
*/ }stu[m];
void changesort(struct student a[],int n,int j){int flag=1,i; struct
student temp; while(flag){ flag=0; for(i=1;ia[i+1].score[j]) { temp=a[i];
a[i]=a[i+1]; a[i+1]=temp; flag=1; } for(i=0;ia[i+1].score[j]){ temp=a[i]; a[i]=a[i+1]; a[i+1]=temp; flag=1; }}}void print_score(struct student a[],int n,int j){ int i,k;printf(“ 奇偶交换 成绩 %d 排序表,j+1); printf(\\n); printf( 名 次 学 号 姓 名 分 数\\n); k=1; for(i=0;k0&&a[i].score[j]!=a[i-1].score[j])k++; printf( %4d ,k); printf(%4d,a[i].number);
printf( %s,a[i].name); printf( %6d,a[i].score[j]);
printf(\\n);}} main()
11文档收集于互联网,已整理,word版本可编辑.
{ int i,j,k;
for (i=0;i 名: ); scanf(%s,stu[i].name); printf(编
号: );scanf(%4d,&stu[i].number); printf(数据结构: ); scanf(%4d,&stu[i].score[0]); printf(离散数学: );
scanf(%4d,&stu[i].score[1]);printf(大学英语: ); scanf(%4d,&stu[i].score[2]); }
for(i=0;i stu[i].score[n]+=stu[i].sc(来自: 小龙 文档 网:数据结构查找实验心得体会)ore[j]; }
changesort(stu,m,n); /*对总分进行排序*/ printf( 学生总分成绩排序表\\n); printf( 名次 学号 姓 名数据结构 离散数学 大学英语 k=1; for(i=0;i { if(i>0&&stu[i].score[n]!=stu[i-1].score[n]) k++;printf(%4d,k);
printf( %4d,stu[i].number);printf( %s,stu[i].name);for(j=0;j
printf(%6d,stu[i].score[j]);printf(\\n);
}
changesort(stu,m,0); /*对数据结构成绩进行排序*/ print_score(stu,m,0);
/*输出数据结构前 3 名同学成绩*/changesort(stu,m,1); /*对离散数学成绩进行
排序*/
12文档收集于互联网,已整理,word版本可编辑.
总 分\\n);篇五:数据结构实训报告 山东科技大学泰山科技学院课程实训说明书 课程: 数据结构项目实训题目: 院 系: 信息工程系XX年5月 25日专业班级: 学 号: 学生姓名: 指导教师:目录
一、设计题目..........................................................3
顺序表操作.........................................................3
链表操作..........................................................3 二叉树的
基本操作..................................................3
二、运行环境(软、硬件环境).......................................3
软件环境..........................................................3
硬件环境..........................................................3
三、数据结构及算法设计的思想.......................................3
顺序表设计构思.....................................................3
链表设计构思...................................................... 二叉树
设计构思....................................................4
13文档收集于互联网,已整理,word版本可编辑.
四、源代码............................................................5
顺序表源代码......................................................5
链表源代码........................................................ 二叉树
源代码......................................................8
五、运行结果分析.....................................................11
顺序表运行结果...................................................11
链表运行结果..................................................... 二
叉树运行结果...................................................15
七、实习总结........................................................18
一、设计题目
链表操作 设计目的? 掌握线性表的在顺序结构和链式结构实现。? 掌握线性表在顺序结构和链式结构上的基本操作。
设计内容和要求利用顺序表链表的拔出运算建立线性链表,然后实现链表的查找、拔出、删除、计数、
14文档收集于互联网,已整理,word版本可编辑.
输出、排序、逆置等运算(查找、拔出、删除、查找、计数、输出、排序、逆置要单独写成
函数),并能在屏幕上输出操作前后的结果。 二叉树的基本操作 设计目的 ? 掌握二叉树的概念和性质 ? 掌握任意二叉树存储结构。 ? 掌握任意二叉树的基本
操作。
设计内容和要求
(1) 对任意给定的二叉树(顶点数自定)建立它的二叉链表存储结构,并利用栈的五种
基本运算(置空栈、进栈、出栈、取栈顶元素、判栈空)实现二叉树的先序、中序、后序三
种遍历,输出三种遍历的结果。
(2) 求二叉树高度、结点数、度为1的结点数和叶子结点数。
篇二:数据结构综合实验心得体会
心得体会:
做了一个星期的程序设计终于做完了,在这次程序设计课中,真是让我获益匪浅。 对大一学习的C语言和这学期开的数据结构,并没有掌握,很多知识都不太懂,突然让自己
15文档收集于互联网,已整理,word版本可编辑.
独立完成一个程序让我手忙脚乱,起码在我认为那真的特别难,看了老师给的题目以及上网查找了一些相关的知识,简单的编了几行就告一段落了,第一天等于只完成了老师要求写的需求分析和概要设计,后来查找了关于哈希表的相关知识,了解了如何创建哈希表,如何合适的构建哈希函数,(选取合适的表长,合适的余数,使得查找时间以及平均查找长度最短)以及什么是除留余数法,和怎样用除留余数法创建哈希表,看懂了之后,我又看了处理冲突的方法,有三种线性探测再散列法法,二次探测再散列法,伪随机数序列法三种,而我所要做的是第一种线性探测再散列的方法,相较后两种要简单很多,在遇到冲突的时候地址加一,知道冲突解决。
在了解这些概念以后,我就开始着手编程序了,在遇到问题的时候请教我们班擅长的同学,慢慢把不能不会不理解的地方给弄明白了,在经过很多次调试以后,一些基本功能已经可以实现了,为了使平均查找长度越小越好,我不断尝试新的表长以及除数,在没有出现错误的基础上,将功能实现,最后,终于在周四的时候将所有的程序调试完全。
这次的综合性实验使我了解到,平时对知识的积累相当重要,同时也要注重课上老师的讲解,老师在课上的延伸是课本上所没有的,这些知识对于我们对程序的编写有很大的作用,同时,编程也要求我们有足够的耐心,细细推敲。越着急可能就越无法得到我们想要的结果,遇到不会的问题要多多请教,知识是在实践与向别人请教的过程中积累的,所以问是至关重要的,只要肯下功夫很多东西都是可以完成的。
篇三:数据结构实验报告及心得体会
XX~XX第一学期数据结构实验报告
班级:信管一班
16文档收集于互联网,已整理,word版本可编辑.
学号:XX51018 姓名:史孟晨
实验报告题目及要求
一、实验题目
设某班级有M(6)名学生,本学期共开设N(3)门课程, 要求实现并修改如下程 序(算法)。
1. 输入学生的学号、姓名和 N 门课程的成绩(输入提示和输出显示使用汉字系统),
输出实验结果 。(15分)
2. 计算每个学生本学期 N 门课程的总分,输出总分和N门课程成绩排在前 3 名学
生的学号、姓名和成绩。
3. 按学生总分和 N 门课程成绩关键字升序排列名次,总分相同者同名次。
二、实验要求
1.修改算法。将奇偶排序算法升序改为降序。(15分)
2.用选择排序、冒泡排序、拔出排序分别替换奇偶排序算法,并将升序算法修改为
降序算法;。(45分))
17文档收集于互联网,已整理,word版本可编辑.
3.编译、链接以上算法,按要求写出实验报告(25)。
4. 修改后算法的所有语句必须加下划线,没做修改语句保持按原样不动。 5.用A4纸打印输出实验报告。
三、实验报告说明
实验数据可自定义,每种排序算法数据要求均不重复。 (1) 实验题目:《N门课程学生成绩名次排序算法实现》;
(2) 实验目的:掌握各种排序算法的基本思想、实验方法和验证算法的准确性; (3) 实验要求:对算法进行上机编译、链接、运行; (4) 实验环境(Windows XP-sp3,Visual c++); (5) 实验算法(给出四种排序算法修改后的全部清单); (6) 实验结果(四种排序算法模拟运行后的实验结果); (7) 实验体会(文字说明本实验成功或不足之处)。
三、实验源程序(算法)
#include \"\" #include \"\" #define M 6 #define N 3 struct student { char name[10]; int number;
int score[N+1]; /*score[N]为总分,score[0]-score[2]为学科成绩*/ }stu[M];
void changesort(struct student a[],int n,int j){int flag=1,i; struct student temp; while(flag){ flag=0;
for(i=1;ia[i+1].score[j]) { temp=a[i]; a[i]=a[i+1]; a[i+1]=temp; flag=1; }
18文档收集于互联网,已整理,word版本可编辑.
for(i=0;i if (a[i].score[j]>a[i+1].score[j])
{ temp=a[i]; a[i]=a[i+1]; a[i+1]=temp; flag=1; }}}
void print_score(struct student a[],int n,int j){ int i,k;
printf(“ 奇偶交换 成绩 %d 排序表\
printf(\" 名 次 学 号 姓 名 分 数\\n\"); k=1;
for(i=0;k { if(i>0&&a[i].score[j]!=a[i-1].score[j])k++;
printf(\" %4d \printf(\"%4d\printf(\" %s\printf(\" %6d\j]); printf(\"\\n\");}} main()
{ int i,j,k;
for (i=0;i { printf(\"请输入第 %d 名学生分数: \姓 名: \"); scanf(\"%s\
printf(\"编 号: \");
scanf(\"%4d\数据结构: \");
scanf(\"%4d\
19文档收集于互联网,已整理,word版本可编辑.
printf(\"离散数学: \");
scanf(\"%4d\大学英语: \");
scanf(\"%4d\
}
for(i=0;i stu[i].score[N]+=stu[i].score[j];
}
changesort(stu,M,N); /*对总分进行排序*/
printf(\" 学生总分成绩排序表\\n\");
printf(\" 名次 学号 姓 名数据结构 离散数学 大学英语 k=1;
for(i=0;i { if(i>0&&stu[i].score[N]!=stu[i-1].score[N]) k++;
printf(\"%4d\
printf(\" %4d\
printf(\" %s\
20文档收集于互联网,已整理,word版本可编辑.
for(j=0;j printf(\"%6d\
printf(\"\\n\");
}
changesort(stu,M,0); /*对数据结构成绩进行排序*/ print_score(stu,M,0); /*输出数据结构前 3 名同学成绩*/changesort(stu,M,1); /*对离散数学成绩进行排序*/
总 分\\n\");
此文档是由网络收集并进行重新排版整理.word可编辑版本!
21文档收集于互联网,已整理,word版本可编辑.
因篇幅问题不能全部显示,请点此查看更多更全内容