数据结构试验指导1(5篇)_第1页
数据结构试验指导1(5篇)_第2页
数据结构试验指导1(5篇)_第3页
数据结构试验指导1(5篇)_第4页
数据结构试验指导1(5篇)_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

本文格式为Word版,下载可任意编辑——数据结构试验指导1(5篇)在日常学习、工作或生活中,大家总少不了接触作文或者范文吧,通过文章可以把我们那些零零散散的思想,聚集在一块。那么我们该如何写一篇较为完美的范文呢?以下是我为大家收集的优秀范文,欢迎大家共享阅读。

multi_set金陵科技学院试验报告

loc=i;for(i=;i=loc;i--)[i+1]=[i];[loc]=x;++;}voiddelete_x(intx){inti,j,found=0;for(i=0;i=;i++)if(x==[i]){found=1;for(j=i+1;j=;j++)[j-1]=[j];i--;--;}if(found==0)printf(“xisnotfoundn〞);else{printf(“xisdeletedn〞);printf(“thelistafterdeletionis:n〞);print_list();

金陵科技学院试验报告

}}

voidmain(){intx,choice;while(1){printf(“**********menu**********n〞);printf(“1--printn〞);printf(“2--searchn〞);printf(“3--insertn〞);printf(“4--deleten〞);printf(“5--exitn〞);printf(“pleaseinputyourchoice:〞);scanf(“%d〞,choice);

switch(choice){case1:printf(“theoriginallistis:n〞);print_list();break;case2:printf(“plsinputxyouwanttosearch:n〞);

金陵科技学院试验报告

scanf(“%d〞,x);find_all_x(x);break;case3:printf(“plsinputxyouwanttoinsert:n〞);scanf(“%d〞,x);insert_x(x);printf(“thelistafterinsertionis:n〞);print_list();break;case4:printf(“plsinputxyouwanttodelete:n〞);scanf(“%d〞,x);delete_x(x);printf(“thelistafterdeletionis:n〞);print_list();break;case5:exit(0);}}}

金陵科技学院试验报告

金陵科技学院试验报告

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

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

金陵科技学院试验报告

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

金陵科技学院试验报告

试验2单链表

一、试验目的和要求

1、试验目的

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

2、试验要求

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

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

二、试验仪器和设备

turboc2.0/visualc++

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

1、必做题

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

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

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

2、选做题

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

金陵科技学院试验报告

金陵科技学院试验报告

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

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

金陵科技学院试验报告

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

金陵科技学院试验报告

试验3堆栈和队列

一、试验目的和要求

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

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

二、试验仪器和设备

turboc2.0/visualc++

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

1、必做题

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

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

2、选做题

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

金陵科技学院试验报告

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

金陵科技学院试验报告

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

金陵科技学院试验报告

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

金陵科技学院试验报告

试验4串

一、试验目的和要求

把握串的存储及应用。

二、试验仪器和设备

turboc2.0/visualc++

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

1、必做题

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

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

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

2、选做题

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

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

金陵科技学院试验报告

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

金陵科技学院试验报告

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

金陵科技学院试验报告

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

金陵科技学院试验报告

试验5二叉树

一、试验目的和要求

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

二、试验仪器和设备

turboc2.0/visualc++

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

1、必做题

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

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

2、选做题

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

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

金陵科技学院试验报告

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

金陵科技学院试验报告

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

金陵科技学院试验报告

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

金陵科技学院试验报告

试验6图

一、试验目的和要求

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

(2)熟练把握对图的深度优先探寻遍历和广度优先探寻遍历的算法。

二、试验仪器和设备

turboc2.0/visualc++

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

1、必做题

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

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

2、选做题

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

金陵科技学院试验报告

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

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

金陵科技学院试验报告

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

金陵科技学院试验报告

试验7排序

一、试验目的和要求

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

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

二、试验仪器和设备

turboc2.0/visualc++

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

1、必做题

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

2、选做题

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

金陵科技学院试验报告

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

金陵科技学院试验报告

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

金陵科技学院试验报告

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

金陵科技学院试验报告

试验8查找

一、试验目的和要求

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

二、试验仪器和设备

turboc2.0/visualc++

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

1、必做题

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

2、选做题

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

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

金陵科技学院试验报告

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

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

数据结构试验指导1篇四

石家庄铁道大学

实验任务书

课程名称:数据结构试验学时:8适用专业:自动化类专业开设学院:电气与电子工程学院

石家庄铁道大学

14学年—15学年第2学期数据结构试验任务书

专业名称:试验学时:2课程名称:数据结构任课教师:王明明试验题目:线性表的基本操作

试验环境:visualc++试验目的:

1、把握线性表的定义;

2、把握线性表的基本操作,如建立、查找、插入和删除等。

试验内容:

定义一个包含学生信息(学号,姓名,成绩)的的顺序表或链表,使其具有如下功能:(1)根据指定学生个数,逐个输入学生信息;(2)逐个显示学生表中所有学生的相关信息;

(3)根据姓名进行查找,返回此学生的学号和成绩;

(4)根据指定的位置可返回相应的学生信息(学号,姓名,成绩);(5)给定一个学生信息,插入到表中指定的位置;(6)删除指定位置的学生记录;(7)统计表中学生个数。

试验提醒:

学生信息的定义:typedefstruct{charno[8];//8位学号charname[20];//姓名intprice;//成绩}student;

顺序表的定义

typedefstruct{student*elem;//指向数据元素的基地址

intlength;//线性表的当前长度}sqlist;

链表的定义:

typedefstructlnode{studentdata;//数据域structlnode*next;//指针域}lnode,*linklist;

试验要求:

(1)程序要添加适当的解释,程序的书写要采用缩进格式。

(2)程序要具在一定的顽强性,即当输入数据非法时,程序也能适当地做出反应,如插入删除时指定的位置不对等等。

(3)程序要做到界面友好,在程序运行时用户可以根据相应的提醒信息进行操作。(4)根据试验报告模板详细书写试验报告,在试验报告中给出链表根据姓名进行查找的算法和插入算法的流程图。

石家庄铁道大学

14学年—15学年第2学期数据结构试验任务书

专业名称:试验学时:2课程名称:数据结构任课教师:李冬梅

试验题目:栈的应用-算术表达式求值

试验环境:visualc++6.0试验目的:

1.把握栈的定义及实现;

2.把握利用栈求解算术表达式的方法。

试验内容:

通过修改完善教材中的算法3.4,利用栈来实现算术表达式求值的算法。对算法3.4中调用的几个函数要给出其实现过程:

(1)函数in(c):判断c是否为运算符;

(2)函数precede(t1,t2):判断运算符t1和t2的优先级;(3)函数operate(a,theta,b):对a和b进行二元运算theta。

程序运行时,输入合法的算术表达式(中间值及最终结果要在0~9之间,可以包括加减乘除和括号),便可输出相应的计算结果。如下图:

试验提醒:(仅供参考,每个函数的具体实现可以有多种方法,希望有创新)

1.将栈的定义和实现单独保存在头文件“stack.h〞中,中包含此头文件(即#include“stack.h〞)。的具体实现(1)主函数如下:voidmain(){cout“请输入算术表达式,并以#终止.〞(2)函数evaluateexpression的实现见算法3.10(3)函数in(c)的实现可以采用以下方式:

statusin(selemtypec)//应在前面有定义typedefcharselemtype;{//判断c是否为运算符switch(c){case'+':returntrue;„„//补充完整

default:returnfalse;}}(4)函数precede(t1,t2)的实现可以采用以下形式:selemtypeprecede(selemtypet1,selemtypet2){//根据教材表3.1,判断两个运算符的优先关系selemtypef;switch(t2){case'+':case'-':if(t1=='('||t1=='#')f='';elsef='';break;„„//补充完整}returnf;}(5)函数operate(a,theta,b)的实现可以采用以下方式:

selemtypeoperate(selemtypea,selemtypetheta,selemtypeb){selemtypec;a=a-48;b=b-48;switch(theta){case'+':c=a+b+48;break;„„//补充完整}returnc;}

选做内容1:进一步改进,使表达式的中间值及最终结果不局限于0~9之间的个位数。(如

果完成要在试验报告中注明),如下图:

选做内容2:

将表达式转化成后缀表达式输出,利用后缀表达式求表达式的值并输出。

将中缀表达式转化成后缀表达式存储在队列中,然后利用后缀表达式求表达式的值并输出。

将中缀表达式转化成后缀的思想:

(1)创立一空队列,用来存放后缀表达式,建立并初始化操作符栈optr,将表达式起始符“#〞压入optr栈。

(2)依次读入表达式中每个字符ch,循环执行(3)至(5),直至求出整个表达式转换完毕。

(3)取出optr的栈顶元素,当optr的栈顶元素和当前读入的字符ch均为“#〞时,整个中缀表达式转换完毕。

(4)若ch不是运算符,则进队,读入下一字符ch。

(5)若ch是运算符,则根据optr的栈顶元素和ch的优先权比较结果,做不同的处理。

①若是小于,则ch压入optr栈,读入下一字符ch。②若是大于,则弹出optr栈顶的运算符,进队。③若是等于,则optr的栈顶元素是“(〞且ch是“)〞,这时弹出optr栈顶的“(〞,相当于去掉括号,然后读入下一字符ch。对后缀表达式进行计算的具体步骤为:

建立一个栈s从左到右读后缀表达式,读到数字就将它转换为数值压入栈s中,读到运算符则从栈中依次弹出两个数分别到y和x,然后以“x运算符y〞的形式计算出结果,再压进栈s中。假使后缀表达式未读完,重复执行上面过程,最终输出栈顶的数值即可终止。

试验要求:

(1)程序要添加适当的解释,程序的书写要采用缩进格式。

(2)程序要具在一定的顽强性,即当输入数据非法时,程序也能适当地做出反应。(3)程序要做到界面友好,在程序运行时用户可以根据相应的提醒信息进行操作。(4)根据试验报告模板详细书写试验报告,在试验报告中给出表达式求值算法的流程图。

数据结构试验指导1篇五

数据结构实验指导书

数据结构试验指导书

目录

数据结构试验指导书1

目录1试验指导书概述2上机试验题目3

试验一c语言相关知识复习3

一、试验目的3

二、试验内容3试验二单链表的插入、删除3

一、试验目的3

二、试验内容3

三、实现提醒4试验三栈及其应用5

一、试验目的5

二、试验内容5试验四二叉树的递归算法6

一、试验目的6

二、试验内容6试验五图的遍历7

一、试验目的7

二、试验内容7试验六有序表的查找7

一、试验目的7

二、试验内容7试验七哈希表7

一、试验目的7

二、试验内容7试验八内部排序算法的应用8

一、试验目的8

二、试验内容8

试验指导书概述

“数据结构〞是计算机专业一门重要的专业技术基础课程,是一门关键性核心课程。本课程系统地介绍了软件设计中常用的数据结构以及相应的存储结构和实现算法,介绍了多种常用的查找和排序技术,并对其进行了性能分析和比较,内容十分丰富。本课程的学习将为后续课程的学习以及软件设计水平的提高打下良好的基础。

由于以下原因,使得把握这门课程具有较大难度:内容多,时间短,给学习带来困难;

贯穿全书的动态链表存储结构和递归技术是学习中的重点和难点;隐含在各部分的技术和方法丰富,也是学习的重点和难点;先修课程中所介绍的专业性知识不多,加大了学习难度。

由于数据结构课程的技术性与实践性,《数据结构课程试验》的设置十分必要。为了帮助学生更好地学习本课程,理解和把握算法设计所需的技术,为整个专业学习打好基础,要求运用所学知识,上机解决一些典型问题,通过分析、设计、编码、调试等各环节的训练,使学生深刻理解、稳固把握所用到的一些技术。

上机实践是对学生的一种全面综合训练,是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。通过上机实践,使学生在可能短的时间内对数据结构知识的实践和应用有一个比较全面和系统的认识,达到理论与实践相结合的目的。

为了达到上述目的,本指导书安排了8个试验题目,它们与教科书的各章有紧凑的关系,使学生在试验后能加深对课程内容的理解,加强动手能力。

每个试验题目采取了统一的格式,由问题描述、基本要求、测试数据、实现提醒等部分组成。

问题描述旨在为读者建立问题提出的背景环境,指明问题“是什么〞;

要求则对问题进一步求精,划出问题的边界,指出具体的参量或前提条件,并规定该题的最低限度要求;

测试部分旨在为检查学生上机作业提供便利,在完成实习题时应自己设计完整和严格的测试方案,当数据输入量较大时,提倡以文件形式向程序提供输入数据;

实现提醒对实现中的难点及其解法思路等问题作了简要提醒,个别问题给出了参考实现。

下面带*的题目为选做题目。

上机试验题目

试验一c语言相关知识复习

一、试验目的

复习c语言中函数、数组、结构体、文件等概念,把握它们的描述与操作方法;熟悉把握c++中typedef、引用参数调用()的概念及使用方法,为理解数据结构课程的后续内容以及算法书写奠定基础。

二、试验内容问题描述:编写一个函数,求一个整数数组中的最大、最小值。

要求:在函数声明中采用引用参数传递方式实现最大、最小值的返回。测试:在主函数中输入10个数,调用此函数,打印输出最大和最小值。2关于指针的使用:

用malloc方式分别申请两个指针,并实现两个指针内容的比较大小操作。要求:此功能在一个函数内实现,该函数接受两个整数值,存储到两个指针内容中,输出两者中的最大值。

测试:从主函数中输入两个数,调用该函数,打印输出交换后的值。

试验二单链表的插入、删除

一、试验目的

1、熟悉某种数据结构在计算机上实现的方法。

2、把握单链表的定义、创立、插入、删除、遍历等基本操作的实现。

3、体会单链表操作、有序表插入、删除的一般方法。

二、试验内容

问题描述:已知递增有序的单链表a,编写算法实现向a中插入或删除一个元素,并保持a的有序性。

试验要求:

1、结点的数据均为整型。

2、若表中已经存在此元素,则不插入

三、实现提醒

1.在已知的线性表中插入或删除,需要下面的辅助函数:线性表的创立、线性表的遍历

2.在单链表表中插入或删除,需依次实现:

a)单链表结构的定义

b)单链表的创立(头插法或尾插法建表)c)单链表的遍历

d)单链表的插入、删除(采用顺序查找方法,顺头指针往后,查找插入或删除位置,再修改指针)

//头文件

#include“stdlib.h〞//预定义常量#definenull0

//单链表的定义

typedefstructlnode{intdata;structlnode*next;}lnode,*linklist;//单链表的创立

voidcreate_list(linklistl){intdata;linklistp,q;l=(linklist)malloc(sizeof(lnode));l-next=null;

q=l;

scanf(“%d〞,data);while(data!=0){

p=(linklist)malloc(sizeof(lnode));

p-data=data;

p-next=q-next;

q-next=p;

q=p;

scanf(“%d〞,data);}}

//单链表的遍历

voidtranverselist(linklistl){

linklistp;

p=l-next;

if(p==null)

{

printf(“niln〞);

return;

}

while(p!=null)

{

printf(“%d〞,p-data);

p=p-next;

}

printf(“n〞);}

试验三栈及其应用

一、试验目的

1、熟悉栈的顺序表示与实现。

2、熟悉栈的应用。

3、理解并把握递归函数的设计与实现。

二、试验内容问题描述:利用栈实现十进制数n转化为d进制数要求:

1)输入一个n和d,打印输出d进制数序列。

2)利用顺序栈来实现十进制数n转化为其他d进制数。此时,需要同时实现初始化空栈、入栈、出栈、判栈空等辅助功能。测试数据:

(1)输入n:1348

d:8

温馨提示

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

评论

0/150

提交评论