当前位置:首页 > 教程 > 数据结构实验报告(4篇)

数据结构实验报告(4篇)

  • 报告
  • 2023-10-02 09:26:09
  • 276

数据结构实验报告 第1篇

一、实验目的

熟悉应用PHOTOSHOP 在图形处理中的操作,

二、实验内容

按照样张的样子把两张素材文件合并为一个图像文件。 保存文件为.psd (不得合并图层)

三、实验环境

实验应用系统及软件:WINDOWNS XP和PHOTOSHOP

四、实验步骤

1、从桌面上启动PHOTOSHOP

2、应用菜单栏中的“文件”菜单“打开”命令分别打开两个图形文件“城市风.JPG”和“云天.jpg”

3、应用“图象”—>“旋转画布”—>“水平反转画布”对文件“云天.jpg”进行转换。

4、使用方框工具选中中间图片,使用CTRL+j新建图层.

5、选择新建图层,并选择“魔术棒工具”大致选出“城市风光.jpg”文件中的建筑轮廓,并配合使用SHIFT、ALT键完成精细的选择。

6、使用“选择”菜单中的“反选”命令选中建筑图片拖动到云天图片中。

7、使用CTRL+T对图片进行自由变换使其符合云天图片大小。

8、保存文件名为

五、实验结果

在实验中着重应用了PHOTOSHOP中的图片反转、图层的建立、图片中的扣图、图片的自由变换,基本达到了实验目标。

六、总结

实验过程中,开始我不知道如何去除图片中的背景、经过请教摸索终于掌握了其应用方法。个人方面我觉得初次接触PHOTOSHOP很有收获。

数据结构实验报告 第2篇

一、实验目的及要求

1)掌握栈和队列这两种特殊的线性表,熟悉它们的特性,在实际问题背景下灵活运用它们。

本实验训练的要点是“栈”和“队列”的观点;

二、实验内容

1) 利用栈,实现数制转换。

2) 利用栈,实现任一个表达式中的语法检查(选做)。

3) 编程实现队列在两种存储结构中的基本操作(队列的初始化、判队列空、入队列、出队列);

三、实验流程、操作步骤或核心代码、算法片段

顺序栈:

Status InitStack(SqStack &S)

(ElemType*)malloc(STACK_INIT_SIZE*sizeof(ElemType));

if(!)

return ERROR;

_INIT_SIZE;

return OK;

Status DestoryStack(SqStack &S)

free();

return OK;

Status ClearStack(SqStack &S)

return OK;

Status StackEmpty(SqStack S)

if()

return OK;

return ERROR;

int StackLength(SqStack S)

return ;

Status GetTop(SqStack S,ElemType &e)

if(;=)

(ElemType *)realloc(,()*sizeof(ElemType));

if(!) return ERROR;

return OK;

Status Push(SqStack &S,ElemType e)

if(;=)

(ElemType *)realloc(,()*sizeof(ElemType));

if(!)

return ERROR;

return OK;

Status Pop(SqStack &S,ElemType &e)

if()

return ERROR;

e=*;

return OK;

Status StackTraverse(SqStack S)

ElemType *p;

p=(ElemType *)malloc(sizeof(ElemType));

if(!p) return ERROR;

p=;

while(p!=)上面一个...

p--;

printf(“%d ”,*p);

return OK;

Status Compare(SqStack &S)

int flag,TURE=OK,FALSE=ERROR;

ElemType e,x;

InitStack(S);

flag=OK;

printf(“请输入要进栈或出栈的元素:”);

while((x= getchar)!='#'&&flag)

switch (x)

case '(':

case '[':

case '{':

if(Push(S,x)==OK)

printf(“括号匹配成功!nn”);

break;

case ')':

if(Pop(S,e)==ERROR || e!='(')

printf(“没有满足条件n”);

flag=FALSE;

break;

case ']':

if ( Pop(S,e)==ERROR || e!='[')

flag=FALSE;

break;

case '}':

if ( Pop(S,e)==ERROR || e!='{')

flag=FALSE;

break;

if (flag && x=='#' && StackEmpty(S))

return OK;

else

return ERROR;

链队列:

Status InitQueue(LinkQueue &Q)

(QueuePtr)malloc(sizeof(QNode));

if (!) return ERROR;

;next = NULL;

return OK;

Status DestoryQueue(LinkQueue &Q)

while()

;next;

free();

return OK;

Status QueueEmpty(LinkQueue &Q)

if(;next==NULL)

return OK;

return ERROR;

Status QueueLength(LinkQueue Q)

int i=0;

QueuePtr p,q;

p=;

while(p->next)

i++;

p=;

q=p->next;

p=q;

return i;

Status GetHead(LinkQueue Q,ElemType &e)

QueuePtr p;

p=;next;

if(!p)

return ERROR;

e=p->data;

return e;

Status ClearQueue(LinkQueue &Q)

QueuePtr p;

while(;next )

p=;next;

free();

;next=NULL;

;next=NULL;

return OK;

Status EnQueue(LinkQueue &Q,ElemType e)

QueuePtr p;

p=(QueuePtr)malloc(sizeof (QNode));

if(!p)

return ERROR;

p->data=e;

p->next=NULL;

;next = p;

; //p->next 为空

return OK;

Status DeQueue(LinkQueue &Q,ElemType &e)

QueuePtr p;

if ( == )

return ERROR;

p = ;next;

e = p->data;

;next = p->next;

if ( == p)

= ; //只有一个元素时(不存在指向尾指针)

free (p);

return OK;

Status QueueTraverse(LinkQueue Q)

QueuePtr p,q;

if( QueueEmpty(Q)==OK)

printf(“这是一个空队列!n”);

return ERROR;

p=;next;

while(p)

q=p;

printf(“%d<-n”,q->data);

q=p->next;

p=q;

return OK;

循环队列:

Status InitQueue(SqQueue &Q)

(QElemType*)malloc(MAXQSIZE*sizeof(QElemType));

if(!)

exit(OWERFLOW);

return OK;

Status EnQueue(SqQueue &Q,QElemType e)

if(()%MAXQSIZE==)

return ERROR;

[]=e;

()%MAXQSIZE;

return OK;

Status DeQueue(SqQueue &Q,QElemType &e)

if()

return ERROR;

e=[];

()%MAXQSIZE;

return OK;

int QueueLength(SqQueue Q)

return()%MAXQSIZE;

Status DestoryQueue(SqQueue &Q)

free();

return OK;

Status QueueEmpty(SqQueue Q) //判空

if( ==)

return OK;

return ERROR;

Status QueueTraverse(SqQueue Q)

if()

printf(“这是一个空队列!”);

while(!=)

printf(“%d<- ”,[]);

return OK;

数据结构实验报告 第3篇

摘 要:本文提出了在数据结构课程实验中实行分层次教学的观点,详细介绍了我院计算机科学专业中数据结构实验课程的分层教学实践方法,对数据结构实验课程的改革进行了探索,本文对如何提高计算机实验课程教学效果有一定的指导作用。

关键词:数据结构;实验教学;分层次

中图分类号:G642

文献标识码:B

1 引言

数据结构是计算机及相关专业的一门核心课程,主要研究信息的逻辑结构及其基本操作在计算机中的表示和实现,该课程学习的效果不仅关系到后续课程的学习,而且直接关系到软件设计水平的提高和专业素质的培养,在计算机学科教育中有非常重要的作用。

数据结构课程的教学又包括理论知识的学习和实践教学。将所学理论知识加以融会贯通以解决实际问题,学以致用才是数据结构课程的学习目的。因此,实验教学与理论内容教学一样,是数据结构教学中不可缺少的重要环节。

本人从事数据结构教学多年,通过对课程、学生及计算机学科的特点的长期探索,在本学院提出了数据结构课程分层次实验教学的观点,并在06级计科专业学生中进行了实践。现将此次实践的基本方法进行总结。

2 实验内容分层次

数据结构理论知识是相对固定的,学习完数据结构,我们要求学生掌握线性表、栈、队列、树和图等数据结构的表示和实现方法,在实际应用中学会自行选择合适的数据结构及存储结构进行编程,另外,还能对计算机中的两种常见运算:查找和排序的各个算法进行实现以及性能比较。

因此,我们按照数据结构的内容将实验题分成了线性表、栈、队列、串、数组、二叉树、图、查找、排序等主题,同时根据循序渐进的原则,在每个主题之下,又按照难度不同分成了概念基础实验、应用基础实验和应用提高实验三种类型。我们将概念基础实验设计为验证性实验,如某种数据结构的表示和实现并将此种数据结构封装为一个类,并要求所有的学生都必须实现;应用基础实验,则是利用已实现的某种数据结构实现的一个简单应用;应用提高实验,是利用已实现的某种或某几种数据结构实现的一个综合应用。后面两种类型的实验又分设若干实验题,每个实验题都设有难度系数。

我们要求每个学生必须完成概念基础实验和一道应用基础实验题,选做一道提高实验题,所选应用基础实验题和提高实验题的难度将作为成绩评定的一个依据。表1中列出了“栈的实现和应用”主题中设置的各个题目。

实验内容的分层使得学生可以根据自己的兴趣、编程能力等实际情况,有选择地进行程序的设计和实践,对于学有余力的同学,也可以尽早接触较大的应用实践题目,得到更多的锻炼。

3 实验文档多层次

实验报告、作业单、实验记录一体化

实验报告是由学院统一印制的具有统一格式的实验文档,在实验报告中规定了每个主题的实验目的和要求,给出了不同层次的各个题目的详细描述,同时要求学生根据各自所选题目填写作业单和实验记录表,并填写所选题目中难度最高的应用实验题的分析、设计和实现过程。实验报告的布局如表2所示:

作业单和实验记录表是实验报告中包含的两个重要的表格。

作业单中列出了该学生在此主题下选做的题目、教师确认后的签字栏、教师批改源程序后对该题完成情况的意见。作业单格式参见表3。

实验记录表中记录了在整个实验过程中所遇到的编译问题、调试问题、程序的逻辑错误以及解决方法,如仅将此问题避开,则记录避开问题的方法。另外表中还需记录程序运行时所用的测试样例。教师在批阅时给出评阅意见。实验记录表格式见表4。

源程序

数据结构实验报告 第4篇

关键词:数据结构;实验环节教学;改革;实践

随着计算机处理的数据量越来越大,数据之间的关系也越来越复杂。“数据结构”这门课介绍最常用的数据结构,阐明数据结构的内在逻辑关系,讨论它们在计算机中的存储表示,并结合各种典型应用,说明它们在进行各种运算时的动态性质及实际的执行算法。“数据结构”的研究不仅涉及到计算机硬件,还和计算机软件密切相关。计算机科学各领域及有关的应用软件都要用到数据结构[1]。

1实验教学在“数据结构”教学中的地位

“数据结构”的前导课是高等数学、高级语言程序设计、离散数学;它又是操作系统、编译原理、数据库原理、算法分析、人工智能、图像处理等专业课程的前导课,具有承上启下的作用。在计算机硕士研究生入学考试中都设有这门课,并且分值最高,所以该课被我校选入第一批重点建设课。它又是一门实验性很强的课程,CC2001对该课程及相关内容和相关度进行了明确的描述。“数据结构”课程要让学生掌握计算机处理非数值运算问题时的一般原理和方法,熟悉解决各种问题的基本模型,培养学生运用已有的算法语言编写准确、清晰程序的能力。另外,通过本课程理论体系的学习,学生在设计软件系统时应学会合理选择数据结构,并能对所选模型进行初步评价,学生通过学习,能够设计一个“好”的程序[2]。

实验是学生检验所学理论知识是否牢固,并探索和运用知识的过程。通过实验,学生不仅可以进一步理解数据结构的基本知识,通过对不同存储结构和相应算法的对比及上机编程练习,提高根据求解问题性质选择合理的数据结构并控制求解算法的时间、空间复杂度的能力,而且能进一步提高软件设计和编程水平,提高学习的积极性和主动性,形成科学的思维方法和严谨的科学态度[3-4],因此“数据结构”的实验十分重要。

2 “数据结构”实验教学的改革和实践

更新教材和实验报告

要推进实验教学的改革,首先要改革现有教材,应重视学生实验能力的培养,体现以学科为基础的学科特色。在“数据结构”教学中,重点是让学生通过实验环节学习数据结构,让学生明白哪些知识是基本点,哪些是难点和重点,明确学习目的和作用。在这样的指导思想下,我们在2005年组织课题组成员,按照CC2001的要求,结合我国计算机的发展和2009年考研大纲,编写了C++描述的《数据结构与算法》教材,于2008年秋季开始使用,效果良好。每过一学期,我们都根据当前情况和学生意见及时更新实验报告。比如最初的实验报告有一道字符串的实验题,随着计算机的发展,不论是C++语言还是Java语言,已经有现成的字符串库函数,学生只要会使用库函数即可,不需自己编写,而且考研大纲也不作要求,所以我们及时更新了教学内容和实验内容,并在实验题目中增加了ACM大赛的实验题,为学生参加程序设计大赛打下良好的基础。

设计合理的实验题目

实验报告是“数据结构”实验环节的重要内容,题目的选取要符合学生的实际水平,而且要有跨度,否则会白白浪费学习时间。2001年,我们调研了清华、北大等各院校的教学改革情况,并征求了毕业生和已学过这门课的在校生意见,发现我们的教学没有从学生的实际情况出发,很难调动学生的学习兴趣。为此,我们从2002年开始编写实验报告,把实验题分成三个层次,有验证(改进)型、综合型和设计型题目。验证型题目是对教科书上典型算法的实现,也有验证改进型的,即是对书上算法稍加修改,这就要求学生必须事先看懂书上的算法才能修改;综合型题目是将不同的实验进行组合,综合解决较复杂的问题,要求学生利用各种知识解决新的问题;设计型题目是教师提出实验目的和要求,学生自行设计,完成实验内容,要求学生的基础比较好,一般安排在课外进行,极大丰富了第二课堂。学生可根据自己的能力选择不同层次的实验题目,大大提高了学习积极性。

我们还鼓励学生对教材中的遗留问题进行自行设计,也鼓励学生根据自己的爱好做一些小的系统实验。这不但使学生的基本知识和实验技能得到巩固,还可以提高学生的创新能力。实验报告的每道实验题都有明确的“对问题的描述”、“实验目的”、“实验内容及要求”、“测试数据”和“思考”,学生每做一道题,都明白实验的目的和要求,完成后,教师还要根据“思考”题目及时向学生提出问题,学生可以自行设计实验方法来解决,教师也可以引导学生设计疑问,主动将教材上的验证性实验转变为设计性实验,教会他们举一反三,促进学生的思维向新和深的层次发展,加深他们对所学知识的理解。

实验题目还要新颖、有趣。比如我们的实验报告有猴子选大王、迷宫等问题,学生可以使用动态规划、回溯法、分支限界法等算法,将几个算法的实际执行时间进行比较,从实验结果证明理论分析的正确性。

建立“以老带新,青年为主”的教学梯队

我们的教学梯队平均年龄35岁,教授、副教授占40%,讲师占40%,助教占20%。青年教师中有硕士和博士研究生,他们接受新鲜事物快,精力充沛且动手能力强,但缺乏教学经验,所以我们要求青年教师至少带两年的实验辅导和习题课,在第一次主讲之前至少要听有经验教师一学期的课,而有经验的教师还要不断试听青年教师的课,指出不足之处,帮助他们尽快提高教学水平。经过几年的锻炼,青年教师陆续登上讲台,共有3人在内蒙古大学“青年教学技艺大赛”中获得了1个一等奖和2个二等奖,其中1人获得内蒙古自治区高等院校第四届青年教师课题教学技能大赛理科组一等奖,成为这门课的骨干教师。

加强上机辅导和课后辅导

编程是高强度的脑力劳动,不是听会的,也不是看会的,而是自己练会的。刚开始,大部分学生上机前没有编好程序,而是上机时现编程序,白白浪费宝贵的上机时间;有些教师辅导时发现学生的程序有错,就动手帮助调试,而不是给学生指出错误的原因,让学生明白后自己修改。结果虽然程序调试好了,但学生不知道是什么原因,以后再有错误时就依赖教师修改,辅导教师很累,而教学效果并不好,学生和教师都有怨言。针对这些情况,我们要求每个学生上机之前就把程序编好,上机调试过程中有问题要及时问老师,最大限度地利用上机时间;教师辅导时既要认真负责,又要讲究方式方法,学生有问题,教师要指出错误所在,让学生明白错误的原因,然后让学生自己改。这样既可以提高学生的编程能力,又使每个学生的问题都能及时解决。

每做一道实验题前,教师都会大致解释题目的含义、用到的知识模块,有的还要引导学生查阅一些参考资料。每当一个模块结束后(以一个逻辑结构为一个模块),我们都要把几个班的学生组织在一起(平时上课是小班),对已经验收过的较好程序和普遍存在的问题进行统一讲解和总结。通过总结,学生加深对实验的理解,知其然,也知其所以然。通过融会贯通已完成的各部分实验,自然引出下一模块的实验。

由于现在学生都没有固定教室,教师没有辅导的固定地点,我们每周一至周四下午安排一名教师在办公室答疑,哪个班的学生都可以到指定办公室问问题,值班教师在办公室的机器上修改学生的程序,这样比在教室里单纯讲解理论的效果要好得多。

加大对实验环节的考核力度

学计算机的,不动手是学不会编程的,学不会编程也就等于没有学会计算机,所以要提高学生的编程能力,就要加大对学生实验环节的考核力度。在“数据结构”课程考核中,平时成绩、实验成绩和理论考试成绩比例为1∶4∶5。为了杜绝考前突击复习的现象,我们在第一节课就讲清要求,让学生从上课的第一天起就重视这门课,真正掌握这门课。在实验环节的考核中,验证型题目一般要求1周内完成,综合型题目一般要求2~3周内完成,对于综合型题目,学生先按2~3人分成一组,每人完成一个模块,通过接口的调用组成一个完整的程序,最后随机抽取小组中的一名代表讲解编程的设计思路,演示程序执行情况,辅导教师根据完成情况给出一个代表小组的分数。学生要在规定的时间请辅导教师验收实验题,过期不验收,视为自动放弃,本次实验题没有成绩。

经过七年实验教学的改革与实践,我们取得了明显效果。2007年6月,在哈尔滨工业大学举行的“东软杯”ACM/ICPC中国•东北地区首届大学生程序设计竞赛中,我院选派了3支代表队,结果分获一、二、三等奖;2007年11月,在内蒙古自治区计算机学会、内蒙古自治区高等学校计算机教育专业委员会主办,内蒙古大学承办的内蒙古自治区第二届ACM/ICPC

大学生程序设计竞赛中,我院分获团体、一、二、三等奖;2008年,在ACM程序设计相关比赛中,我院获自治区级一等奖、2个二等奖,获东北赛区1个三等奖、2个优秀奖。

实践证明,这样教学改革不仅能激发学生学习的积极性,还能锻炼他们的团队精神,让他们学会软件开发的整个过程,为他们编程能力的提高、毕业论文设计和走向工作岗位打下良好基础。

3结束语

从2009年开始,计算机硕士研究生入学考试采取全国统考的方式,“数据结构”是必考科目,而且占分值最大,这更能说明这门课在计算机专业中的重要性。这些年来,我们一直致力于这门课的建设,从教材选用、课程体系建设、师资队伍、课程教学、实验教学等各个环节进行了不断的实践和探索[5]。我们相信,通过加大对“数据结构”教学,特别是实验环节的改革和实践,一定能进一步调动起学生学习这门课的积极性,激励他们热爱计算机,热爱科学,成为IT业的优秀人才。

参考文献:

[1] 殷人昆. 数据结构[M]. 北京:清华大学出版社,2007.

[2] 王昭荣,曾卫东,鲁兴萌. 改革实验教学及管理模式,培养创新型本科人才[J]. 高等理科教育,2007(1):63-65.

[3] 汪沁. 基于“数据结构”实验的探讨和研究[J]. 中国教育信息化,2007(4):17-19.

[4] 徐大华. 程序设计语言教学方法探讨[J]. 高等理科教育,2007(1):36-38.

[5] 赵艳红,邵定宏.“数据结构”教学的探索与研究[J]. 计算机教育,2008(9):131-132.

Reform and Practice in Data Structure Course’s Experimental Aspects

ZHAO Yu-lan

(College of Computer Science, Neimongol University, Hohhot 010021, China)

Abstract: “Data Structure” is a Core Curriculum of computer science, and it plays a nexus role in the computer science teaching. Based on the summarizing of many years’ teaching experiences of the course, an analysis and research on the reform and practice of experiment teaching is given in this paper. We intend to strengthen students’ programming ability and problem solving ability training and intend to improve student's programming ability and the power of thought in analysis and also stimulate student's innovation ability.