算法与数据结构实验报告(大全8篇)

  • 上传日期:2023-11-19 03:09:30 |
  • ZTFB |
  • 9页

报告的撰写需要收集和整理大量的素材和资料,确保准确性和可信度。报告的篇幅应该适中,尽量保持简洁,避免重复和赘述。阅读报告范文可以帮助我们拓宽思路,增加创新和思考的角度。

算法与数据结构实验报告篇一

1004012033陈孝婕10计本3“数据结构与算法”这门课程对于计算机科学与技术系的学生来说是非常重要的课程。这门课程主要包括十个章节。

一.每章主要知识点总结和个人掌握情况。

第一章主要要求学生掌握数据、数据类型、数据结构、算法及算法分析等基本概念和基础知识。另外,第一章结合课程学习要求,复习和掌握算法描述工具--c语言中的指针类型与指针变量、结构类型与结构变量、函数与参数、递归定义和递归函数、动态存储分配、文件操作、程序测试和测试集、测试数据的设计和程序调试等问题。

从这一章中我不仅学到了数据结构的基本概念和基础知识,了解到什么是数据结构,我们为什么要学习数据结构这门课程。而且复习了大一下学期所学的c语言程序课程设计中的算基本法语句。有利于数据结构与算法后面课程的学习。

第二章主要学习顺序表(包括顺序串)数据类型、数据结构、基本算法及相关应用。知识点包括顺序表的概念、数据结构定义、数据类型描述、基本算法的实现及其性能的分析等知识;还有“查找”和“排序”的概念,“查找”包括3种查找方式:简单顺序查找、二分查找、分块查找;“排序”包括直接插入排序、希尔排序、冒泡排序、快速排序、直接选择排序和归并排序(重点为二路归并排序)6种排序方式;掌握应用顺序表来进行查找和排序的各类算法以及不同的查找和排序算法间的性能差异。在此基础上,理解顺序串的相关应用。

从这一章中我学习到各种不同的查找方法和排序方式,其中二分查找作为重点查找方法我进行了重点学习,熟悉并熟练地运用二分查找并且了解到各种排序方法适合于不同的顺序表。对于顺序串的学习,我主要掌握了字符串的基本运算,包括:求串长strlen(s)、连接stract(st1,st2)、求子串substr(s,i,j)、比较串的大小strcmp(s,t)、插入insert(s1,i,s2)、删除delete(s,i,j)、子串定位index(s1,s2)、置换(replace(s1,i,j,s2)、replace(s,t,v)两种)。

第三章主要学习链表(单聊表、循环链表)的概念、数据结构、数据类型描述、基本算法以及链表相关应用。需要掌握各种链表的概念、数据结构定义、基本算法实现以及算法的性能分析等知识,掌握链表的相关应用方法,在此基础上掌握链串的相关知识。

通过这一章我学习了另一种数据结构——链表,在逻辑结构上,链表与顺序表一样,也是线性逻辑结构;单链表借助“地址”的概念,使用了链式存储结构,产生了一种新的数据结构——链表,链表的基本操作是地址运算,在此基础上构成的链表基本算法的特点也就不同,从链表算法的功能看,链表的基本运算与顺序表基本相同,但实现方法和过程与顺序表是不同的,链表可分为静态链表和动态链表两种。这一章我学习到的实际应用是链表的创建、插入和删除等基本操作。循环链表的建立和查询方法。

第四章主要知识点是在两种不同的存储结构下设计的堆栈,即顺序栈和链栈。主要内容是顺序栈和链栈的概念、数据类型、数据结构定义和基本运算算法及其性能分析。通过对本章的学习,要求掌握顺序栈及链栈的数据类型描述、数据结构、基本算法及其性能分析等知识。在此基础上,了解堆栈的相关应用,掌握应用堆栈解决实际问题的思想及方法。

通过对这一章的学习,我了解了堆栈的概念,堆栈的原理、创建方法以及使用方式。“后进先出”是其基本原则。利用堆栈可以轻松方便的解决对称问题以及括号匹配等问题。堆栈与顺序表、链表不同的是,堆栈只能对一端的数据元素进行操作,即只在栈顶进行元素的插入和删除。掌握顺序栈和链表的存储结构是学习堆栈的要素之一。堆栈是一类常用的数据结构,被广泛应用于各种程序设计中。

第五章的重点知识是在顺序存储和链接存储下的两种队列——顺序(循环)队列和链队。

列的数据结构、基本运算及其性能分析以及应用。通过本章的学习,要求掌握顺序队列(重点是循环队列)及链队列的概念、数据类型描述、数据结构、基本算法及其性能分析等知识。在此基础上,了解队列的相关应用,掌握应用队列来解决实际问题的思想及方法。

通过这一章的学习,我掌握了队列的定义,概念,创建以及“对头删除”,“队尾插入”的原则。重点了解了判断循环队列空和满的判断条件。同堆栈一样,队列也是一种具有线性逻辑结构、运算受限制的数据结构。与堆栈只在一端(栈顶)进行元素的插入和删除运算不同的是,队列是在对头进行插入,而在队尾完成数据元素的删除,所以队列的算法和适用的应用问题与堆栈有很大的区别。队列作为一类常用的数据结构,被广泛应用于各种程序设计中。

第六章主要学习数组、系数矩阵和广义表的基本概念、集中特殊矩阵的存储结构及基本运算,在此基础上学习特殊矩阵的计算算法与广义表应用等相关问题。通过本章的学习,要求掌握特殊矩阵的压缩存储结构,在该存储结构下元素的定位方法,理解稀疏矩阵的计算和广义表的存储结构及其基本运算。了解矩阵与广义表的相关应用。

通过这章的学习和前几章的比较,我了解到前几章的线性结构中的数据元素都是非结构的原子类型,即每一个元素都是不可再分解的。本章讨论的数组和广义表等数据结构可以看成是在前几章线性结构基础上的一个扩展:组成该数据结构的数据元素本身也是一个数据结构。矩阵计算应该数值计算方面的问题,由于矩阵和数组的关系以及特殊矩阵存储结构的复杂性,进而使得特殊矩阵的存储结构和算法也表现出其特殊性,所以数据机构课程应该解决其计算问题。

第七章的学习重点是二叉树的概念、数据类型、数据结构定义和各种基本算法,在此基础上介绍二叉树的一些应用问题。通过本章的学习,我掌握了二叉树概念及其性质、二叉树的逻辑结构和存储结构等知识,掌握二叉树的建立、遍历、线索化等基本概念和算法及性能分析,能熟练应用二叉树这章结构来解决一些实际问题,如哈夫曼树及哈夫曼编码、查找与排序(二叉树排序)等问题。了解堆栈排序及其算法等知识。二叉树是非线性数据结构,是树形结构的一种特殊形式。在现实生活有许多数据关系可抽象为树或二叉树的形式。本章中的二叉树的概念及其性质、二叉排序树、存储结构、遍线索(化)、基本算法为重点内容,二叉排序树的应用为难点内容。

第八章的学习重点是树和森林的数据结构、基本算法及其性能分析,树和森林与二叉树间的转化算法等,在此基础上介绍树的应用——b-树。通过本章的学习,我掌握了树和森林的概念和性质、数据结构、树的基本算法及性能分析、树与二叉树间的转换及其算法,并能应用b-树来实现数据元素的动态查找。舒适一种非线性结构,它在二叉树的基础上做了更为一般化的扩展,而森林是树的集合。在树结构中,每一个元素最多只有一个前驱,但可能有多个后继。现实生活中的家族关系、单位的组成结构等,均可抽象为树的形式。

第九章学习重点是散列结构的相关知识,学习常用的散列函数和冲突处理方法,散列表的常用算法及其性能分析,通过本章的学习,我掌握了散列结构和散列函数的相关概念,掌握散列结构的存储(散列表)的相关概念,要求掌握散列冲突处理方法(散列法)的相关知识,并能灵活运用散列法解决应用问题。

散列结构是使用散列函数建立数据结点关键字与存储地址之间的对应关系并提供多种当数据节点存储地址发生“冲突”时的处理方法而建立的一种数据结构。散列结构的查找等运算效率是很高的,本章中的散列函数、散列结构、散列表、散列法的基本概念和基本算法是重点,线性探测散列算法、链地址法散列算法和散列法的应用是难点。

第十章的学习重点是图的定义及性质,图的四种存储结构,图的两种遍历算法以及图的典型应用,包括最小生成树、最短路径、拓扑排序和关键路径等。通过本章学习,我掌握了图的概念和基本性质,图的存储结构(邻接矩阵和邻接表)及其基本算法、图的遍历及算法、图的最小生成树普利姆算法或者克鲁斯卡尔算法、图的最短路径迪杰斯特拉算法和弗洛伊德算法、有向无环图拓扑排序算法。了解了图的逆邻接表、十字链表、邻接多重表存储结构及其基本算法、关键路径求解算法,并能灵活运用图的不同的数据结构和遍历算法解决复杂的应用问题。

二.课程学习体会。

在学习开始的时候,老师就明确提出它不是一种计算机语言,不会介绍c语言的变成语言,而是通过学习可以设计出良好的算法,高效地组织数据。一个程序无论采用何种语言,其基本算法思想不会改变。联系到在大一和大二上学期学习的c和c++语言,我深刻认识到了这一点。“软件开发好比写作文,计算机语言提供了许多华丽的辞藻,而数据结构则考虑如何将这些辞藻组织成一篇优秀的文章来。”在学习这门课中,要熟悉对算法思想的一些描述手段,包括文字描述、图形描述和计算机语言描述等。因此,计算机语言基础是必须的,因为它提供了一种重要的算法思想描述手段——机器可识别的描述。

这门课结束之后,我总结了学习中遇到的一些问题,最为突出的,书本上的知识与老师的讲解都比较容易理解,但是当自己采用刚学的知识点编写程序时却感到十分棘手,有时表现在想不到适合题意的算法,有时表现在算法想出来后,只能将书本上原有的程序段誊写到自己的程序中再加以必要的连接以完成程序的编写。针对这一情况,我会严格要求自己,熟练掌握算法思想,尽量独立完成程序的编写与修改工作,只有这样,才能够提高运用知识,解决问题的能力。

1、建议在上课过程中加大随堂练习的分量,以便学生能当堂消化课堂上学习的知识,也便于及时了解学生对知识点的掌握情况,同时有助于学生上课积极思考,不会开小差。

2、建议在课时允许的情况下,增加习题课的分量,通过课堂的习题讲解,加深对知识点的掌握,同时对各知识点的运用有一个更为直观和具体的认识。

以上便是我对《数据结构与算法》这门课的学习总结,我会抓紧时间将没有吃透的知识点补齐。今后我仍然会继续学习,克服学习中遇到的难关,在打牢基础的前提下向更深入的层面迈进!

算法与数据结构实验报告篇二

课程名称:

学生学号:

所属院部:

(理工类)。

学生姓名:

指导教师:——20学年第学期。

金陵科技学院教务处制。

实验报告书写要求。

实验报告原则上要求学生手写,要求书写工整。若因课程特点需打印的,要遵照以下字体、字号、间距等的具体要求。纸张一律采用a4的纸张。

实验报告书写说明。

实验报告中一至四项内容为必填项,包括实验目的和要求;实验仪器和设备;实验内容与过程;实验结果与分析。各院部可根据学科特点和实验具体要求增加项目。

填写注意事项。

(1)细致观察,及时、准确、如实记录。(2)准确说明,层次清晰。

(3)尽量采用专用术语来说明事物。

(4)外文、符号、公式要准确,应使用统一规定的名词和符号。(5)应独立完成实验报告的书写,严禁抄袭、复印,一经发现,以零分论处。

实验报告批改说明。

实验报告的批改要及时、认真、仔细,一律用红色笔批改。实验报告的批改成绩采用百分制,具体评分标准由各院部自行制定。

实验报告装订要求。

实验批改完毕后,任课老师将每门课程的每个实验项目的实验报告以自然班为单位、按学号升序排列,装订成册,并附上一份该门课程的实验大纲。

实验项目名称:顺序表实验学时:2同组学生姓名:实验地点:实验日期:实验成绩:批改教师:批改时间:

实验1顺序表。

一、实验目的和要求。

掌握顺序表的定位、插入、删除等操作。

二、实验仪器和设备。

vc6.0。

三、实验内容与过程(含程序清单及流程图)。

1、必做题。

(1)编写程序建立一个顺序表,并逐个输出顺序表中所有数据元素的值。编写主函数测试结果。

(2)编写顺序表定位操作子函数,在顺序表中查找是否存在数据元素x。如果存在,返回顺序表中和x值相等的第1个数据元素的序号(序号从0开始编号);如果不存在,返回-1。编写主函数测试结果。(3)在递增有序的顺序表中插入一个新结点x,保持顺序表的有序性。

解题思路:首先查找插入的位置,再移位,最后进行插入操作;从第一个元素开始找到第一个大于该新结点值x的元素位置i即为插入位置;然后将从表尾开始依次将元素后移一个位置直至元素i;最后将新结点x插入到i位置。

(4)删除顺序表中所有等于x的数据元素。

2、选做题。

(5)已知两个顺序表a和b按元素值递增有序排列,要求写一算法实现将a和b归并成一个按元素值递减有序排列的顺序表(允许表中含有值相同的元素)。

程序清单:

四、实验结果与分析(程序运行结果及其分析)。

五、实验体会(遇到问题及解决办法,编程后的心得体会)。

实验项目名称:单链表实验学时:2同组学生姓名:实验地点:实验日期:实验成绩:批改教师:批改时间:

实验2单链表。

一、实验目的和要求。

1、实验目的。

掌握单链表的定位、插入、删除等操作。

2、实验要求。

(1)注意链表的空间是动态分配的,某结点不用之后要及时进行物理删除,以便释放其内存空间。

(2)链表不能实现直接定位,一定注意指针的保存,防止丢失。

二、实验仪器和设备。

visualc++6.0。

三、实验内容与过程(含程序清单及流程图)。

1、必做题。

(1)编写程序建立一个单链表,并逐个输出单链表中所有数据元素。(2)在递增有序的单链表中插入一个新结点x,保持单链表的有序性。

解题思路:首先查找插入的位置然后进行插入操作;从第一个结点开始找到第一个大于该新结点值的结点即为插入位置;然后在找到的此结点之前插入新结点;注意保留插入位置之前结点的指针才能完成插入操作。

(3)编写实现带头结点单链表就地逆置的子函数,并编写主函数测试结果。

2、选做题。

已知指针la和lb分别指向两个无头结点单链表的首元结点。要求编一算法实现,从表la中删除自第i个元素起共len个元素后,将它们插入到表lb中第j个元素之前。程序清单:

四、实验结果与分析(程序运行结果及其分析)。

五、实验体会(遇到问题及解决办法,编程后的心得体会)。

实验项目名称:堆栈和队列实验学时:2同组学生姓名:实验地点:实验日期:实验成绩:批改教师:批改时间:

实验3堆栈和队列。

一、实验目的和要求。

(1)掌握应用栈解决问题的方法。(2)掌握利用栈进行表达式求和的算法。

(3)掌握队列的存储结构及基本操作实现,并能在相应的应用问题中正确选用它们。

二、实验仪器和设备。

visualc++6.0。

三、实验内容与过程(含程序清单及流程图)。

1、必做题。

(1)判断一个算术表达式中开括号和闭括号是否配对。(2)测试“汉诺塔”问题。

(3)假设称正读和反读都相同的字符序列为”回文”,试写一个算法判别读入的一个以’@’为结束符的字符序列是否是“回文”。

2、选做题。

在顺序存储结构上实现输出受限的双端循环队列的入列和出列算法。设每个元素表示一个待处理的作业,元素值表示作业的预计时间。入队列采取简化的短作业优先原则,若一个新提交的作业的预计执行时间小于队头和队尾作业的平均时间,则插入在队头,否则插入在队尾。程序清单:

四、实验结果与分析(程序运行结果及其分析)。

五、实验体会(遇到问题及解决办法,编程后的心得体会)。

实验项目名称:串实验学时:2同组学生姓名:实验地点:实验日期:实验成绩:批改教师:批改时间:

实验4串。

一、实验目的和要求。

掌握串的存储及应用。

二、实验仪器和设备。

visualc++6.0。

三、实验内容与过程(含程序清单及流程图)。

1、必做题。

(1)编写输出字符串s中值等于字符ch的第一个字符的函数,并用主函数测试结果。

(2)编写输出字符串s中值等于字符ch的所有字符的函数,并用主函数测试结果。

解题思路:可以将第一题程序改进成一个子函数,在本题中循环调用。(3)设字符串采用单字符的链式存储结构,编程删除串s从位置i开始长度为k的子串。

2、选做题。

假设以链结构表示串,编写算法实现将串s插入到串t中某个字符之后,若串t中不存在这个字符,则将串s联接在串t的末尾。

提示:为提高程序的通用性,插入位置字符应设计为从键盘输入。程序清单:

四、实验结果与分析(程序运行结果及其分析)。

五、实验体会(遇到问题及解决办法,编程后的心得体会)。

实验项目名称:二叉树实验学时:2同组学生姓名:实验地点:实验日期:实验成绩:批改教师:批改时间:

实验5二叉树。

一、实验目的和要求。

(1)掌握二叉树的生成,以及前、中、后序遍历算法。(2)掌握应用二叉树递归遍历思想解决问题的方法。

二、实验仪器和设备。

visualc++6.0。

三、实验内容与过程(含程序清单及流程图)。

1、必做题。

(1)建立一棵二叉树。对此树进行前序遍历、中序遍历及后序遍历,输出遍历序列。

(2)在第一题基础上,求二叉树中叶结点的个数。(3)在第一题基础上,求二叉树中结点总数。(4)在第一题基础上,求二叉树的深度。

2、选做题。

已知一棵完全二叉树存于顺序表sa中,[1…]存储结点的值。试编写算法由此顺序存储结构建立该二叉树的二叉链表。

解题思路:根据完全二叉树顺序存储的性质来确定二叉树的父子关系即“还原”了二叉树,之后再按照二叉树二叉链表的构造方法进行建立。完全二叉树顺序存储的一个重要性质为,第i个结点的左孩子是编号为2i的结点,第i个结点的右孩子是编号为2i+1的结点。程序清单:

四、实验结果与分析(程序运行结果及其分析)。

五、实验体会(遇到问题及解决办法,编程后的心得体会)。

实验项目名称:图实验学时:2同组学生姓名:实验地点:实验日期:实验成绩:批改教师:批改时间:

实验6图。

一、实验目的和要求。

(1)熟练掌握图的基本概念、构造及其存储结构。

(2)熟练掌握对图的深度优先搜索遍历和广度优先搜索遍历的算法。

二、实验仪器和设备。

visualc++6.0。

三、实验内容与过程(含程序清单及流程图)。

1、必做题。

(1)构造一个无向图(用邻接矩阵表示存储结构)。

(2)对上面所构造的无向图,进行深度优先遍历和广度优先遍历,输出遍历序列。

2、选做题。

采用邻接表存储结构,编写一个判别无向图中任意给定的两个顶点之间是否存在一条长度为k的简单路径的算法。简单路径是指其顶点序列中不含有重复顶点的路径。提示:两个顶点及k值均作为参数给出。程序清单:

四、实验结果与分析(程序运行结果及其分析)。

五、实验体会(遇到问题及解决办法,编程后的心得体会)。

实验项目名称:排序实验学时:2同组学生姓名:实验地点:实验日期:实验成绩:批改教师:批改时间:

实验7排序。

一、实验目的和要求。

(1)熟练掌握希尔排序、堆排序、直接插入排序、起泡排序、快速排序、直接选择排序、归并排序和基数排序的基本概念。

(2)掌握以上各种排序的算法。区分以上不同排序的优、缺点。

二、实验仪器和设备。

visualc++6.0。

三、实验内容与过程(含程序清单及流程图)。

1、必做题。

用随机数产生100000个待排序数据元素的关键字值。测试下列各排序函数的机器实际执行时间(至少测试两个):直接插入排序、希尔排序(增量为4,2,1)、冒泡排序、快速排序、直接选择排序、二路归并排序、堆排序和基于链式队列的基数排序。

2、选做题。

假设含n个记录的序列中,其所有关键字为值介于v和w之间的整数,且其中很多关键字的值是相同的。则可按如下方法排序:另设数组number[v…w],令number[i]统计关键字为整数i的纪录个数,然后按number重排序列以达到有序。试编写算法实现上述排序方法,并讨论此种方法的优缺点。程序清单:

四、实验结果与分析(程序运行结果及其分析)。

五、实验体会(遇到问题及解决办法,编程后的心得体会)。

实验项目名称:查找实验学时:2同组学生姓名:实验地点:实验日期:实验成绩:批改教师:批改时间:

实验8查找。

一、实验目的和要求。

(1)掌握顺序表查找、有序表查找、索引顺序表查找的各种算法。(2)掌握哈希表设计。

二、实验仪器和设备。

visualc++6.0。

三、实验内容与过程(含程序清单及流程图)。

1、必做题。

(1)在一个递增有序的线性表中利用二分查找法查找数据元素x。

2、选做题。

(2)构造一个哈希表,哈希函数采用除留余数法,哈希冲突解决方法采用链地址法。设计一个测试程序进行测试。

提示:构造哈希表只是完成查找的第一步,大家应该掌握在哈希表上进行查找的过程,可以试着编程序实现。程序清单:

四、实验结果与分析(程序运行结果及其分析)。

五、实验体会(遇到问题及解决办法,编程后的心得体会)。

算法与数据结构实验报告篇三

首先你要知道什么是数据结构,学习数据结构的意义。这将是你学习的动力所在。计算机软件都用到了数据结构。所以,学好数据结构对于你将来从事计算机编程类的工作有十分重要的作用。

数据结构中的基本概念,你要一定清楚。平时要多看书,要在计算机上去调试程序,在调试的过程中,你才能发现自己的问题,然后及时解决。在上机调试的过程中,更要大胆尝试,注重运用。拿到一个题时,更要深入分析,尝试用不同的算法去设计。当然编程的时候,要注意格式。比如:变量一定要先定义后使用。变量的定义不要定义在中间。

算法与数据结构是紧密联系,所以你算法一定要会。如果你是学生,只需把课本上出现的搞懂就好了,比如线性表的插入,删除,查找算法,它都是固定的。你就要理解,当然你要学会画图。对于书中的内容要熟悉。

数据结构的大纲如下:线性表、栈和队列,串、数组和广义表、树与森林、图、还有就是查找和排序。简单的总结一下也就是它的逻辑结构:线性结构和非线性结构。这些基本的内容你如果搞懂了,你的数据结构也就学好了。

要严格要求自己。在学习算法的过程中,你要想它为什么要这样设计?它的优点在哪里?想着去改进算法,慢慢的的你的逻辑思维能力也就提高了。你会发现其实数据结构也就那么回事,不是很难。

有不懂得地方要及时请教老师,不要不懂装懂。不要放过任何一个细节,因为我的专业就是计算机,所以有很多都是深有体会。

注意:

一、认真安排好你的时间。

首先你要清楚一周内所要做的事情,然后制定一张作息时间表。在表上填上那些非花不可的时间,如吃饭、睡觉、上课、娱乐等。安排这些时间之后,选定合适的、固定的时间用于学习,必须留出足够的时间来完成正常的阅读和课后作业。当然,学习不应该占据作息时间表上全部的空闲时间,总得给休息、业余爱好、娱乐留出一些时间,这一点对学习很重要。一张作息时间表也许不能解决你所有的问题,但是它能让你了解如何支配你这一周的时间,从而使你有充足的时间学习和娱乐。

二、学习前先预习。

这就意味着在你认真投入学习之前,先把要学习的内容快速浏览一遍,了解学习的大致内容及结构,以便能及时理解和消化学习内容。当然,你要注意轻重详略,在不太重要的地方你可以花少点时间,在重要的地方,你可以稍微放慢学习进程。

三、充分利用课堂时间。

学习成绩好的学生很大程度上得益于在课堂上充分利用时间,这也意味着在课后少花些功夫。课堂上要及时配合老师,做好笔记来帮助自己记住老师讲授的内容,尤其重要的是要积极地独立思考,跟得上老师的思维。

四、学习要有合理的规律。

课堂上做的笔记你要在课后及时复习,不仅要复习老师在课堂上讲授的重要内容,还要复习那些你仍感模糊的认识。如果你坚持定期复习笔记和课本,并做一些相关的习题,你定能更深刻地理解这些内容,你的记忆也会保持更久。定期复习能有效地提高你的考试成绩。

五、一个安静的、舒适的学习环境。

选择某个地方作你的学习之处,这一点很重要。它可以是你的单间书房或教室或图书馆,但是它必须是舒适的,安静而没有干扰。当你开始学习时,你应该全神贯注于你的功课,切忌“身在曹营心在汉”。

六、树立正确的考试观。

平时测验的目的主要看你掌握功课程度如何,所以你不要弄虚作假,而应心平气和地对待它。或许,你有一两次考试成绩不尽如人意,但是这不要紧,只要学习扎实,认真对待,下一次一定会考出好成绩来。通过测验,可让你了解下一步学习更需要用功夫的地方,更有助于你把新学的知识记得牢固。

算法与数据结构实验报告篇四

我是计算机系2006级本科生,在大二上学期选修了张铭老师的数据结构与算法实验班。数据结构与算法课是每一个计算机专业学生的必修课,从我目前所学习的后续课程,包括算法设计、编译技术等课程来看,这门课是其非常重要的基础课程之一。

我从初中就开始接触高中的信息学奥林匹克竞赛,对数据结构与算法方面的相关知识接触的比较早。张老师为了更有针对性地对具有不同基础的学生进行因材施教,开设了数据结构算法实验班,我很荣幸地被批准通过选修实验班的课。通过一个学期的学习,我加深了对数据结构与算法的相关知识的理解,并通过张老师细致地讲解,将自己过去从高中竞赛所学到的离散的、碎片式的知识点连贯地串了起来,形成了一套较为完整的知识体系。我想这对于我后续的学习和对更高层次数据结构与算法知识的探索,都是大有裨益的。

我认为,在这门课的学习过程中,张老师所引导我们掌握的不仅仅是知识点与问题的简单联系,而是进行拓展性地思考和探索。例如树的顺序存储,除了讲解各种带标记的存储方法以外,我们还讨论了这些存储方式中记录的信息是不是都是必须的、如何用最少的标记信息表示一棵树等问题。这就让我们对原本看似平凡的知识有更深刻的认识。另外,我们所完成的作业和练习也都不是简单的解题训练,很多问题都是带有可研究性与可扩展性的,甚至很多问题没有单一的结论,这就引导我们创造性地应用所学的知识去研究问题、解决问题。

张老师在实验班的课堂上不但注重基础知识的讲解,还会适当介绍一些较为高级的数据结构(例如伸展树、后缀树等),以及一些较新的算法研究成果。这些介绍不仅对于巩固基础数据结构有很强的促进作用,还让对我们往后更难的课程更有信心。事实上,我认为算法与数据结构在我们计算机专业课程的学习中是无处不在的,图论中的树、图模型,组合数学中模型的计数,编译技术中关于文法的分析、自动机模型,无一不包含数据结构与算法的理论。能够更快、更好地掌握后续这些课程的知识体系,于我在数据结构与算法课中所学是分不开的。我是北大acm队员之一,并于今年代表北京大学参加了第32届acm-icpc国际大学生程序设计竞赛全球总决赛,获得了第13名。acm-icpc竞赛十分注重选手对于模型抽象的能力、对于数据结构与算法的理解以及编程能力。这门课程对我参加acm竞赛无疑也是帮助甚大。它让我更系统、透彻地理解了数据结构与算法的相关知识,对于在赛场上的解题能力和解题速度都有很大的提高。总而言之,张老师的数据结构与算法这门课程作为我的必修课之一,对于我计算机专业的学习是帮助很大并且影响深远的。

北京大学计算机系2006级本科生。

2008年4月14日。

算法与数据结构实验报告篇五

(一)实验目的和要求:

1.熟悉vc集成环境。

2.会定义线性表的顺序结构和链式结构。

3.熟悉对线性表的基本操作,如插入、删除等。

(二)实验内容和原理或涉及的知识点(综合性实验):

自己编写程序实现线性表的建立、插入、删除等功能。

写出线性表、顺序表、链表的定义,简单写出主要算法的思路。

(三)实验条件:安装有vc的计算机。

(四)实验设计方案。

2.链表的插入操作3.链表的删除操作4.链表数据元素的访问。

(五)实验过程、数据和实验结果记录。

程序代码(略)。

实验过程中输入/输出数据、程序运行结果的记录。(一定要有!)。

第二次实验栈和队列。

(一)实验目的和要求:

(二)实验内容和原理或涉及的知识点(综合性实验):

写出栈的定义,简单写出主要算法的思路。

(三)实验条件:安装有vc的计算机。

(四)实验设计方案。

设计的算法有:1.初始化栈2.入栈3.出栈。

4.判断栈是否为空5.十进制转换为八进制。

(五)实验过程、数据和实验结果记录。

程序代码(略)。

实验过程中输入/输出数据、程序运行结果的记录。(一定要有!)。

(一)实验目的和要求:

1.熟练掌握二叉树的结构,以及这种数据结构的特点2.会定义二叉树的链式存储结构。

3.能实现二叉树的建立、遍历等功能,需要完成先序遍历、中序遍历和后序遍历递归算法。

(二)实验内容和原理或涉及的知识点(综合性实验):

自己编写程序实现二叉树的各种基本操作,如二叉树的建立(头插法或者尾插法),遍历等写出二叉树的定义,简单写出主要算法的思路。

(三)实验条件:安装有vc的计算机。

(四)实验设计方案。

(五)实验过程、数据和实验结果记录。

程序代码(略)。

实验过程中输入/输出数据、程序运行结果的记录。(一定要有!)。

第四次实验。

查找。

(一)实验目的和要求:

1.熟练掌握查找算法的基本思想,以及算法的适用条件。

2.会定义静态查找表的顺序结构,能实现顺序查找、二分查找。

(二)实验内容和原理或涉及的知识点(综合性实验):

自己编写程序实现顺序查找、二分查找。

写出静态查找表的定义,简单写出主要算法的思路。

(三)实验条件:安装有vc的计算机。

(四)实验设计方案。

设计的算法有:1.建立静态查找表2.顺序查找。

3.建立有序的静态查找表4.二分查找。

(五)实验过程、数据和实验结果记录。

程序代码(略)。

实验过程中输入/输出数据、程序运行结果的记录。(一定要有!)。

算法与数据结构实验报告篇六

数据结构与算法是计算机程序设计的重要理论技术基础,它不仅是计算机科学的核心课程,而且也已经成为其他理工专业的热门选修课。随着高级语言的发展,数据结构在计算机的研究和应用中已展现出强大的生命力,它兼顾了诸多高级语言的特点,是一种典型的结构化程序设计语言,它处理能力强,使用灵活方便,应用面广,具有良好的可移植性。通过学习,先报告如下:

第一章的内容主要包括有关数据、数据类型、数据结构、算法、算法实现、c语言使用中相关问题和算法分析等基本概念和相关知识。其中重点式数据、数据类型、数据结构、算法等概念;c语言中则介绍了指针、结构变量、函数、递归、动态存储分配、文件操作、程序测试与调试问题等内容。

第二章主要介绍的是线性逻辑结构的数据在顺序存储方法下的数据结构顺序表(包括顺序串)的概念、数据类型、数据结构、基本运算及其相关应用。其中重点一是顺序表的定义、数据类型、数据结构、基本运算和性能分析等概念和相关知识。二是顺序表的应用、包括查找问题(简单顺序查找、二分查找、分块查找)、排序问题(直接插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、归并排序)、字符处理问题(模式匹配)等内容。本章重点和难点在查找和排序问题的算法思想上,6种排序方法的性能比较。

第三章主要介绍的是线性逻辑结构的数据在链接存储方法下数据结构链表的相关知识。主要是单链表、循环链表的数据类型结构、数据结构、基本运算及其实现以及链表的相关应用问题,在此基础上介绍了链串的相关知识。在应用方面有多项式的相加问题、归并问题、箱子排序问题和链表在字符处理方面的应用问题等。本章未完全掌握的是循环链表的算法问题和c的描述。

第四章介绍在两种不同的存储结构下设计的堆栈,即顺序栈和链栈的相关知识,了解堆栈的相关应用,掌握应用堆栈来解决实际问题的思想及方法。本章主要内容是顺序栈和链栈的概念、数据类型、数据结构定义和基本运算算法及其性能分析。本章堆栈算法思想较为简单,所以能较好掌握。

第五章主要介绍顺序存储和链接存储方法下的两种队列、顺序(循环)队列和链队列的数据结构、基本运算及其性能分析以及应用。顺序队列(重点是循环队列)和链队列的概念、数据类型描述、数据结构和基本运算算法及其性能分析等。本章同堆栈有点类似,算法思想较为简单,所以能较好掌握;但难点重在循环队列队空、队满的判断条件问题。第六章“特殊矩阵、广义表及其应用”将学习数组、稀疏矩阵和广义表的基本概念,几种特殊矩阵的存储结构及其基本运算,在此基础上学习特殊矩阵的计算算法与广义表应用等相关问题。本章的重点是相关数据结构的存储结构及其基本运算算法。掌握了特殊矩阵的压缩存储结构,在该存储结构下元素的定位方法,理解了稀疏矩阵的计算和广义表的存储结构。

第七章“二叉树及其应用”的知识结构主要是:非线性结构数据二叉树的定义、性质、逻辑结构、存储结构及其各种基本运算算法,包括二叉树的建立、遍历、线索化等算法。在此基础上,介绍二叉树的一些应用问题,包括哈夫曼编码问题、(平衡)二叉排序树问题和堆排序问题等。

第八章“树和森林及其应用”介绍树和森林的数据结构、基本算法及其性能分析,树和森林与二叉树之间的转换算法等,在此基础上介绍树的应用---b-树,应用b-树来实现数据元素的动态查找。本章基本掌握树和森林的概念和性质、数据结构、树的基本算法及性能分析,树和二叉树间的转换及其算法,并用应用b-树来实现数据元素的动态查找未能掌握好。

第九章“散列结构及其应用”是逻辑结构“集合型”的数据元素在散列存储方法下的数据结构及其应用知识内容。主要介绍散列函数的概念、散列结构的概念、散列存储结构的概念---散列表、散列函数和散列表中解决冲突的处理方法---开放定址法、链地址法以及散列表的基本算法及其性能分析。本章概念较为多,所以掌握不太好。

第十章“图及其应用”是逻辑结构为“图形”的数据结构及其应用知识内容,主要介绍图的定义和基础知识,图的2种存储结构。图的基本算法以及图的典型应用问题(最小生成树、最短路径、拓扑排序和关键路径等)。

二、对各知识点的掌握情况。

我对各知识点的掌握情况总结如下:

第一章不太难,能基本掌握。但关系全书的时间性能分析有些未能全部掌握。第二章本章重点和难点在查找和排序问题的算法思想上,6种排序方法的性能比较。本章未掌握的为希尔排序、快速排序、归并排序的时间复杂度分析。第三章,对链表掌握还好,对其数据结构进行了分析,有循环链表,掌握的不是很好,对其中一些用法不熟练。第四章堆栈,本章堆栈算法思想较为简单,所以能较好掌握,但表达式计算问题未掌握好的。第五章的循环队列队空、队满的判断条件问题掌握的不是很好。第六章的重点是相关数据结构的存储结构及其基本运算算法。掌握了特殊矩阵的压缩存储结构,在该存储结构下元素的定位方法,理解了稀疏矩阵的计算和广义表的存储结构。第七章对二叉树掌握较好,其概念,存储,遍历有很好的掌握。就是对二叉排序树有点生疏,它的生成算法不是很会。第八章树树与二叉树之间的转换,森林与二叉树的转换算法思想基本掌握。第九章散列的一些知识,没有深入学习,大概了解了散列存储结构散列表,散列函数,冲突的处理方法。第十章了解了图的逆邻接表的存储结构,关键路径求解算法未能掌握好,不能灵活运用图的不同数据结构和遍历算法解决复杂的应用问题。

三、学习体会。

通过学习数据结构与算法,让我对程序有了新的认识,也有了更深的理解。同时,也让我认识到,不管学习什么,概念是基础,所有的知识框架都是建立在基础概念之上的,所以,第一遍看课本要将概念熟记于心,然后构建知识框架。并且,对算法的学习是学习数据结构的关键。在第二遍看课本的过程中,要注重对算法的掌握。对于一个算法,读一遍可能能读懂,但不可能完全领会其中的思想。掌握一个算法,并不是说将算法背过,而是掌握算法的思想。我们需要的是耐心。每看一遍就会有这一遍的收获。读懂算法之后,自己再默写算法,写到不会的地方,看看课本想想自己为什么没有想到。对算法的应用上,学习算法的目的是利用算法解决实际问题。会写课本上已有的算法之后,可以借其思想进行扩展,逐步提高编程能力。

四、对课程教学的建议。

1、感觉上课时的气氛不是很好,虽然大部分人都在听,可是效果不是很好。所以希望老师能在授课中间能穿插一些活跃课堂氛围的话题,可以是大家都非常关心的一些内容,这样既让大家能在思考之余有一个放松,也能够提高学生的学习积极性和学习效率。

2、学习的积极性很重要,有时候我们花了很长时间去写实验报告,也很认真的去理解去掌握,可是最后实验报告可能就只得了一个c,抄的人反而得a,这样的话很容易打击学生的积极性,在后面的实验报告中没动力再去认真写。所以希望老师能在这方面有所调整。

3、虽然讲课的时间很紧,但是还是希望老师能在讲述知识点的时候能运用实际的调试程序来给我们讲解,这样的话能让我们对这些内容有更深刻的印象和理解。

算法与数据结构实验报告篇七

为了顺利完成实验教学任务,确保人身、设备的安全,培养严谨、踏实、实事求是的科学作风和爱护国家财产的优良品质,特制定以下实验规则:

1、实验前必须充分预习,完成指定的预习任务。预习要求如下:

(1)认真阅读指导书,进行必要的设计与计算。(2)熟悉实验内容。

(3)预先复习,并按要求编写程序。(4)未完成预习任务者不得进入实验室。

2、遵守以下纪律:

(1)在实验室不得做和实验无关的事情。

(2)进行任课老师指定内容以外的实验,必须经指导教师同意。(3)遵守纪律,不迟到。

(4)保持实验室内安静、整洁,爱护公物,不许乱写乱画。

实验环境。

本实验在386以上的微机上进行,运行环境为vc6.0。

实验报告要求。

1、实验题目2.实验目的3.实验环境。

4.实验内容与完成情况(可以附上自主设计的源程序)5.出现的问题及对问题的解决方案6.实验思考:(学生对本次实验的收获的总结)。

实验一单链表。

(一)一、实验目的。

掌握线性表的链式存储结构及其基本操作。

二、预习要求。

1、看懂书上的算法,深入理解链表的物理存储模式和逻辑模式。

2、根据要求,编写程序准备上机调试。

三、实验内容。

实现一个简单的学生信息管理系统,该系统的功能有:

1、利用单链表建立学生基本信息表。

2、浏览每个学生的信息。

3、根据学号查询某个学生的基本信息。

4、添加学生信息到单链表中。

5、删除一个学生的信息。

四、实现提示。

设计结点的结构体类型,包括学生的学号、姓名、年龄、性别;要求设计一个简单的菜单界面,根据需要选择所要进行的操作;构造函数,每一个函数实现上述的一个功能。

实验二单链表。

(二)一、实验目的。

掌握线性表的链式存储结构及其基本操作。

二、预习要求。

1、看懂书上的算法,深入理解链表的物理存储模式和逻辑模式。

2、根据要求,编写程序准备上机调试。

三、实验内容。

1、实现单链表的就地逆置。

2、建立两个非递减有序单链表,然后合并成一个非递减链表。

3、建立两个非递减有序单链表,然后合并成一个非递增链表。

4、编写一个主函数,调试上述算法。

四、选做题、思考题。

1、如何用带表头结点的单链表作为多项式的存储表示,实现两个多项式的相加。

2、约毖夫环的实现。

3、如何利用文件实现学生信息的存取。

实验三栈。

一、实验目的。

深入了解并掌握栈的特性及其在实际中的应用;熟练掌握栈的算法实现;运用栈操作求解实际问题。

二、预习要求。

1、看懂书上的算法,深入理解栈的特性和存储结构,以便在实际问题背景下灵活运用。

2、根据要求,编写程序准备上机调试。

三、实验内容。

利用栈实现数据的分类,要求当输入为偶数时进栈1,当输入为奇数时进栈2,最后分别从栈1和栈2输出偶数和奇数序列。

四、实现提示。

1、开辟一个连续的存储空间,实现两个栈顺序存储空间的共享;分别在两端设置栈顶指针,并按要求实现栈操作。

2、采用顺序存储实现栈的初始化、入栈、出栈操作。

五、选做题、思考题。

1、两栈空间共享时,栈满的条件是什么?

2、为停车场编制进行管理的模拟程序(习题集p96,2.1)。

3、编写程序,利用栈实现表达式求值。

实验四二叉树。

一、实验目的。

通过实践掌握二叉树的存储结构和遍历思想;掌握二叉树的常见算法的程序实现。

二、预习要求。

二叉树的三种遍历方法。

三、实验内容。

1、输入字符序列,建立二叉链表。

2、利用栈,编写非递归算法,编程实现二叉树的中序遍历。

3、求二叉树的叶子结点个数。

4、在主函数中设计一个简单的菜单,分别调试上述算法。

四、选做题、思考题。

1、如何实现二叉树的后序遍历(非递归)。

2、如何求二叉树的高度。

实验五最短路径(旅游景点导游咨询模拟)。

一、实验目的。

利用图的最短路径原理为用户提供路径咨询,掌握求最短路径的算法并编程实现。

二、预习要求。

学习了解图的存储结构,掌握求最短路径的两种算法。

三、实验内容。

设计一个旅游景点导游模拟程序,为来访的客人提供景点最短路径的信息查询服务,任意选取n城市,构成一个有向带权图,图中顶点表示城市,边上的权值表示两点间的距离,根据用户指定的始点和终点输出相应的最短路径。

四、实现提示。

咨询以用户和计算机的对话方式进行,由用户输入起始点和终点,输出信息:最短路径是多少?并指出所经过的城市。存储结构可选用邻接矩阵。

五、选做题、思考题。

1.如何实现对城市信息进行编辑(如:添加或删除)的功能。

2.用邻接表作存储结构,求一指定景点出发,到其余各景点的最短路径。

实验六内部排序。

一、实验目的。

直观感受算法的关键字比较次数和关键字移动次数。

二、预习要求。

1、常见的排序算法(插入排序、交换排序、选择排序、归并排序、基数排序等)的思想、特点及其适用条件。

2、根据要求,编写程序准备上机调试。

三、实验内容。

1、对直接插入排序和简单选择排序算法进行关键字比较次数和关键字移动次数的比较。

2、利用链式存储结构,编写程序,实现直接插入排序和冒泡排序。

四、实现提示。

测试数据可以为几组典型的数据:正序、逆序、乱序。

五、选做题、思考题。

1、快速排序算法的非递归实现。

2、结合实验,理解针对不同待排元素的特点而选择不同排序方法的重要性。

3、如何对本实验进行时间、空间的复杂度分析。

算法与数据结构实验报告篇八

婚姻状况:未婚民族:汉族。

诚信徽章:未申请身高:157cm。

人才测评:未测评体重:

人才类型:在校学生。

应聘职位:幼教/保育员,家教,销售主管/销售代表/客户代表。

工作年限:1职称:

求职类型:兼职可到职日期:随时

月薪要求:面议希望工作地区:天河区,越秀区,广州。

工作经历。

无起止年月:-10~-05。

公司性质:所属行业:

担任职位:作业指导。

工作描述:辅导小学生作业,照顾小学生。

担任职位:地铁志愿者。

工作描述:

毕业院校:广东交通职业技术学院。

最高学历:大专获得学位:毕业日期:-06

专业一:软件技术专业二:

起始年月终止年月学校(机构)所学专业获得证书证书编号。

语言能力。

外语:英语良好粤语水平:一般。

其它外语能力:

国语水平:优秀。

工作能力及其他专长。

个人自传。

您可能关注的文档