数据结构实验指导书

2024-06-09

数据结构实验指导书(精选6篇)

篇1:数据结构实验指导书

数 据 结 构 实 验 指 导 书

南京工程学院

信息管理与信息系统教研室

2014年3月

实验一 线性表操作

一、实验目的

1.熟悉C语言的上机环境,进一步掌握C语言的结构特点。2.掌握线性表的顺序存储结构的定义及C语言实现。

3.掌握线性表的链式存储结构——单链表的定义及C语言实现。4.掌握线性表在顺序存储结构即顺序表中的各种基本操作。5.掌握线性表在链式存储结构——单链表中的各种基本操作。

二、实验内容

1.顺序线性表的建立、插入及删除。

2.链式线性表的建立、插入及删除。

三、实验步骤

1.建立含n个数据元素的顺序表并输出该表中各元素的值及顺序表的长度。2.利用前面的实验先建立一个顺序表L={21,23,14,5,56,17,31},然后在第i个位置插入元素68。

3.建立一个带头结点的单链表,结点的值域为整型数据。要求将用户输入的数据按尾插入法来建立相应单链表。

四、实现提示

1.由于C语言的数组类型也有随机存取的特点,一维数组的机内表示就是顺序结构。因此,可用C语言的一维数组实现线性表的顺序存储。

在此,我们利用C语言的结构体类型定义顺序表: #define MAXSIZE 1024 typedef int elemtype;/* 线性表中存放整型元素 */ typedef struct { elemtype vec[MAXSIZE];int len;/* 顺序表的长度 */ }sequenlist;将此结构定义放在一个头文件sqlist.h里,可避免在后面的参考程序中代码重复书写,另外在该头文件里给出顺序表的建立及常量的定义。

2.注意如何取到第i个元素,在插入过程中注意溢出情况以及数组的下标与位序(顺序表中元素的次序)的区别。

3.单链表的结点结构除数据域外,还含有一个指针域。用C语言描述结点结构如下:

typedef int elemtype;typedef struct node { elemtype data;//数据域

struct node *next;//指针域

}linklist;注意结点的建立方法及构造新结点时指针的变化。构造一个结点需用到C语言的标准函数malloc(),如给指针变量p分配一个结点的地址:

p=(linklist *)malloc(sizeof(linklist));该语句的功能是申请分配一个类型为linklist的结点的地址空间,并将首地址存入指针变量p 中。当结点不需要时可以用标准函数free(p)释放结点存储空间,这时p为空值(NULL)。

五、思考与提高

1.如果按由表尾至表头的次序输入数据元素,应如何建立顺序表。2.在main函数里如果去掉L=&a语句,会出现什么结果?

实验二

栈和队列的应用

一、实验目的

1.掌握栈的顺序表示和实现 2.掌握队列的链式表示和实现

二、实验内容

1.编写一个程序实现顺序栈的各种基本运算。2.实现队列的链式表示和实现。

三、实验步骤

1.顺序栈(1)初始化顺序栈;(2)插入元素(3)删除栈顶元素(4)取栈顶元素(5)遍历顺序栈(6)置空顺序栈 2.链队列

(1)初始化并建立链队列(2.)入链队列(3)出链队列(4)遍历链队列

四、实现提示

1./*定义顺序栈的存储结构*/ typedef struct { ElemType stack[MAXNUM];int top;}SqStack;

/*初始化顺序栈函数*/ void InitStack(SqStack *p)

{q=(SqStack*)malloc(sizeof(SqStack));/*申请空间*/} /*入栈函数*/ void Push(SqStack *p,ElemType x){if(p->toptop=p->top+1;/*栈顶+1*/ p->stack[p->top]=x;} /*数据入栈*/ } /*出栈函数*/ ElemType Pop(SqStack *p){x=p->stack[p->top];/*将栈顶元素赋给x*/ p->top=p->top-1;} /*栈顶-1*/ /*获取栈顶元素函数*/ ElemType GetTop(SqStack *p){ x=p->stack[p->top];} /*遍历顺序栈函数*/ void OutStack(SqStack *p){ for(i=p->top;i>=0;i--)printf(“第%d个数据元素是:%6dn”,i,p->stack[i]);} /*置空顺序栈函数*/ void setEmpty(SqStack *p){ p->top=-1;} 可参考代码: #include “stdio.h” #define StackSize 100 typedef int ElemType;main(){

SqStack S;

ElemType e;

int N;

/*初始化顺序栈*/ /*入栈*/ /*出栈*/ /*遍历顺序栈*/ getch();}

2./*定义链队列*/ typedef struct Qnode { ElemType data;struct Qnode *next;}Qnodetype;typedef struct { Qnodetype *front;Qnodetype *rear;}Lqueue;

/*初始化并建立链队列函数*/ void creat(Lqueue *q)

{ h=(Qnodetype*)malloc(sizeof(Qnodetype));/*初始化申请空间*/ h->next=NULL;q->front=h;q->rear=h;for(i=1;i<=n;i++)*利用循环快速输入数据*/ { scanf(“%d”,&x);Lappend(q,x);} /*利用入链队列函数快速输入数据*/ } /*入链队列函数*/ void Lappend(Lqueue *q,int x){ s->data=x;s->next=NULL;q->rear->next=s;q->rear=s;} /*出链队列函数*/ ElemType Ldelete(Lqueue *q){ p=q->front->next;q->front->next=p->next;if(p->next==NULL)q->rear=q->front;x=p->data;free(p);} /*释放空间*/ /*遍历链队列函数*/ void display(Lqueue *q){ while(p!=NULL)/*利用条件判断是否到队尾*/ { printf(“%d-->”,p->data);p=p->next;} } 可参考如下代码: #include “stdio.h” #define MaxSize 100 typedef int ElemType;main(){

LinkQueue Q;

ElemType e;

/*初始化并建立链队列*/

/*入链队列*/ /*出链队列*/

*遍历链队列*/

}

DestoryQueue(&Q);

getch();}

五、思考与提高

1.读栈顶元素的算法与退栈顶元素的算法有何区别? 试写一个算法,判别读入的一个以‘@’为结束符的字符序列是否是‚回文‛。实验三 树操作

一、实验目的

1.通过实验,掌握二叉树的建立与存储 2.通过实验,掌握二叉树的遍历方法

二、实验内容

1.练习二叉树的建立与存储 2.练习二叉树的遍历

三、实验步骤

1.建立二叉链表的结构描述、二叉树的建立、二叉树的先序、中序与后序遍历算法。

2.建立二叉树,并通过调用函数, 输出先序遍历、中序遍历与后序遍历的结果。

四、实现提示

1.采用递归方法建立二叉树:

首先建立二叉树的根 结点,然后建立其左右子树,直到空子树为止。

2.先序遍历、中序遍历与后序遍历二叉树。#include #include typedef int Status;typedef char ElemType;typedef struct BiTNode { ElemType data;struct BiTNode *lchild,*rchild;}BiTNode,*BiTree;/*建立二叉树*/

BiTree CreateBiTree(BiTree &T){ } /*先序遍历*/ Status PreOrderTraverse(BiTree T){ } /*中序遍历*/ Status InOrderTraverse(BiTree T){ } /*后序遍历*/ Status PostOrderTraverse(BiTree T){ }

int main(){ BiTree T;CreateBiTree(T);PreOrderTraverse(T);printf(“n”);/*先序遍历*/ InOrderTraverse(T);printf(“n”);/*中序遍历*/ PostOrderTraverse(T);printf(“n”);/*后序遍历*/

return 0;}

五、思考与提高

编写递归算法,计算二叉树中叶子结点的数目。

篇2:数据结构实验指导书

实验规则················································2 实验环境················································2 实验报告要求············································3 实验一 单链表

(一)······································4 实验二 单链表

(二)······································5 实验三 栈···············································6 实验四 二叉树···········································7 实验五 最短路径·········································8 实验六 内部排序·········································9

实 验 规 则

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

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:指导学生学会分析实验数据

一、运用表格整理,指导学生发现数据呈现的规律

在收集各种数据时,教师应引导学生明白,数据的本身并没有意义,重要的是数据所给予的启示。特级教师路培琦曾说过:“科学课既强调学生亲历探究的过程,还重视在实验过程中搜集和积累数据,强调对事物的认识,不仅要在质上认识,更要从量的分析中得出结论。”学生收集、记录实验数据完成后,教师指导学生对实验数据进行重新整理和分析,使原本无序、杂乱的数据变得有序,不但能帮助学生深入挖掘数据背后隐藏的规律,为学生更好地总结、归纳概括科学规律提供依据和建议,也有利于发挥数据应有的作用,对现象作出客观的解释,学会从各种数据中选择有效的数据并把数据转化为证据。

在教学《豌豆荚里的豌豆》一课时,学生收集的40个豌豆夹里的豌豆粒数如下:4、5、3、1、4、5、7、6、4、6、8、4、6、3、4、6、5、7、5、4、6、7、4、5、6、3、0、2、5、5、6、6、7、9、5、5、6、5、6、5。这些数据很真实地记录了每个豌豆荚里的豌豆粒数,但是很杂乱无章,很难发现碗豆荚里种子粒数的分布规律。在学生完成搜集数据之后,教师指导学生运用表格对这些数据进行整理和分析。如下表:

学生对表格中的数据进行分析如下:

生:我发现了5粒的最多。

生:我发现了没有种子的只有1个。

生:我发现一个碗豆荚里种子最多有8个。

生:我发现8粒和1粒的各有一个,而9粒和9粒以上的都没有。

生:大多数都在4~6粒种子之间。

师:豌豆荚里的豌豆种子数是多少?怎样回答比较合理?哪一些种子数量比较多一些?

生:4粒、5粒、6粒。在4~6个之间的数量比较多。

这样,原本无序的数据变得清晰有序,学生很轻松地发现豌豆种子粒数分布的大致规律。虽然不能确切地说出碗豆荚里的种子数,但在整理分析后,得到了一个合理的推论,更重要的是培养了学生实事求是的科学态度,增强了学生对数据的敏感性。这一过程,将潜移默化地影响着学生的科学学习,对于学生探究事物的内在规律将起到至关重要的作用。

二、运用直观图表,指导学生发现数据之间的变化规律

将实验数据按一定规律用直观图表的方式表达出来是记录和处理实验数据最常用的方法。图表设计要求对应关系清楚、简单明了、有利于发现相关数据之间的关系。对于一般比较简单的探究问题,学生通过对统计得到的数据进行分析就可以发现事物内在规律,而一些稍复杂的内容,光看数据就不那么容易了,通过统计图、分布图等图表的运用,能直观反映出数据之间的联系,有利于学生发现数据背后蕴含的规律。

如在六年级《抵抗弯曲》一课的教学中,学生通过实验获得了一组关于纸的厚度与所承受垫圈数量的数据。这些实验数据比较抽象,教师引导学生利用这组数据制作出一份曲线图,使抽象的数变为直观,很容易建立数据之间的联系,发现其中的规律。

学生根据纸的厚度与所承受垫圈的数据完成的统计图如下:

折线统计图更直观有效地反映了纸的厚度与抵抗弯曲能力之间的关系。统计图让学生充分认识到:随着纸的厚度的增加,承受垫圈的个数大大增加,抵抗弯曲的能力也显著增强。通过运用直观图表的方法,让学生更形象、更容易地找到了事物变化的规律。

三、运用纵横比较,指导学生建立实验数据的联系

在小学科学教材中,有许多实验得到的数据是具有高度明晰、数据内在高度规律化的,此时学生很容易从数据上轻而易举地解释现象,并从现象中概括结论。有的教师此时往往就此满足,未能开展学生数据分析方法的提炼,学生因此失去形成数据分析方法的理性思考机会,以后在遇到较为复杂的数据时就表现为茫然失措,不知从何入手。如果教师引领学生对通过实验得到的数据进行纵横比较,很容易发现实验数据之间的变化规律,建立不同实验数据之间的联系,提升实验数据分析的有效性。教师引领学生进行数据分析,可以采用横向比较、纵向比较、同一类纵向比、不同类横向比等等,学生自然就会对数据分析具有了一定的分析策略,数据分析能力将会有较大的提高。

如一位科学教师执教教科版六年级上册《形状与结构》单元的《抵抗弯曲》一课时,教材引领学生用对比实验的方法研究梁的抗弯曲能力与其宽度、厚度之间的关系。学生得到的实验数据如下:(单位为1角钱硬币的重量)

在两个实验中,改变宽度和厚度都要成倍地改变,很容易看出实验数据变化的规律。学生可以发现:纸的宽度增加,抗弯曲能力会增强;纸的厚度增加,抗弯曲能力会大大增强。这位教师没有就此收场,而是引领学生把增加纸的宽度和厚度所收集的实验数据进行纵横比较,把两个实验进行沟通,架构了两个实验之间的联系,很容易发现实验数据之间的规律。学生会发现:要增强抗弯曲的能力,增加厚度比增加宽度更加有效。这样提升了学生的实验数据分析能力,促进了学生思维的深刻性。

四、通过差异比较,引领学生把数据分析推向深刻

学生在探究活动中会得到大量的数据。这些数据间的差异是客观存在的,有时是不可靠的,甚至是错误的。科学教师不应该回避这些差异,而应积极面对,正确对待学生实验数据的差异,必要时引领学生重复实验,以期得到可靠的且具有一定信度的数据,增强学生对数据的敏感性,培养学生严谨细致、认真负责的科学态度,使学生的数据意识在处理这些数据时得以培养,能自觉地学会用数据来描述事物或对一些现象进行解释。学生数据分析能力虽然可以从高度明晰化的数据分析中逐渐得到提升,但是更大的提升来源于对于数据差异的分析,而且在数据差异处把数据分析引向深刻,促使学生返回去审视自己实验操作的科学性和正确性、审视实验器材的合理性与科学性、审视实验进程先后顺序的科学性等等,对于提高学生今后实验开展的严谨性、自我审视能力等都会起到很大的作用。

如,在研究纸的宽度与抵抗弯曲的能力之间的关系时,统计学生的实验数据如下(单位为1个垫圈的重量):

教师指导学生通过比较,先观察比较第1组学生的数据,发现:随着纸的宽度增加,抵抗弯曲的能力也随着增加。教师引领学生比较这4组的数据,发现第4组的4倍宽的纸承重32个垫圈的重量,远远超过了其他三个小组的数据。教师没有放弃这个差异,而是引领学生共同探讨这一组为什么出现了这么大的差异。下面是这一环节的教学:

师:请第4组的同学把这张纸拿到前面来。展示给大家看看。

学生把这张4倍宽的纸展示给大家。

师:为什么他们的纸能承受的垫圈数比你们的多这么多?他这组的纸和你们小组的有什么区别?

生:他们的纸有折痕。

生:他们的纸有点像半圆形,我们的纸是平的。

生:他们纸的边都折起来,有点像工字形。我觉得纸的形状也能增强抵抗弯曲的能力。

……

师:纸的形状与抵抗弯曲的能力到底有没有关系?我们下节课再研究。

对于这个与其他组相比差异很大的实验数据,教师没有回避,没有放弃,而是组织学生进行研讨。学生通过研讨,发现了纸的形状也与抵抗弯曲的能力有关这一值得研究的问题,恰恰是下一课需要研究的问题。本节课虽然没有研究,却给学生下一阶段的学习埋下了伏笔,使学生产生了进一步探究的欲望,这不正是我们科学课所期待的吗?

五、培养数据意识,提高学生的分析能力

实验数据展示在学生面前时,学生不一定马上能从数据表或图中找到规律,教师应引导学生重视实验数据,指导学生选用适当的方法进行分析数据,培养学生分析数据的能力和习惯。这一过程是十分重要的。教师可以从以下几方面入手:

教师自己要关注数据。教师可以借助放大的数据统计表或者运用多媒体把实验数据放大进行展示,通过问题的设置来引领学生关注数据、分析数据、探寻规律。在整理数据的基础上,指导学生一步步分析数据,给学生提供训练分析实验数据的机会,使学生养成分析数据的习惯。

在教学中,教师应当有意识地要求学生从实验数据出发,通过分析思考,运用数学工具得出规律性结论。这样做不仅能使学生加深对科学规律的总结过程和本质内涵的理解,并且有助于培养学生分析实验数据的能力,使学生经历由数据推出结果的过程。

在分析实验数据时,教师应引导学生像数学解题那样,要说出整个数据分析思考的过程,学会选用合适的方法进行表达。长此以往,学生的表达能力会不断提升,同时也促进学生思维能力的提升。

篇4:如何加强学生实验指导

关键词:化学 实验 指导 能力

化学是一门以实验为基础的学科,实验教学是传授知识的方法,也是培养学生动手能力的有效手段。因此化学实验是化学教学过程中不可缺少的重要环节,若只侧重于对课堂理论的验证,强调循序渐进,则使学生处于被动接受状态,加之受课堂教学理论的干扰,对实验现象、结果不加科学分析,甚至改动数据以吻合课堂理论的观点,因此,我们在化学实验的教学中以培养学生的能力为主、验证理论为辅,达到了有效地开发学生的能力的实验目标。

化学实验质量高低对学生掌握化学科学具有十分重要的意义。现在医药学各专业的学生在化学教学中,实验所占的比例逐渐增多,充分说明了实验在化学教学中的重要性,为此,本文就如何指导学生实验,提高实验效果,充分挖掘学生实验的潜力,培养学生的能力等方面作了一些探索。

一、指導学生预习实验

预习实验是学生实验成功的前提和基础,是实验教学的重要组成部分。每次学生实验前,教师要指导学生进行预习。要求学生认真阅读实验内容,明确实验目的,了解实验步骤、操作过程和实验时应注意的事项,写好预习笔记即填写好实验预习单。参照预习单做实验便于克服学生看书做实验慢的陋习,使之集中精力做好实验。通过上述活动,使学生了解实验应该做些什么?可能会出现什么问题?做到心中有数,克服盲目性和被动性,培养学生对知识的归纳、整理、统摄能力,养成严肃认真的科学态度。因此,做好学生预习实验指导,是一项十分重要的工作,不容忽视。

二、指导学生做实验

实验时要求学生做到如下几点:(1)认真操作,细心观察现象,并及时地、如实地记录实验结果;(2)严格遵守实验室的规章,实验过程保持肃静,切莫把实验课当儿戏;(3)实验中要节约药品,爱惜仪器,实验结束后必须把仪器放置好,试管等洗涤干净,以保证实验能有条不紊地进行。学生实验是以基本理论、基础知识为前提,应用前人的知识来重新验证,属于验证性实验。教师在学生实验之前应强调操作的关键步骤和注意事项,一些操作比较困难的步骤,教师可以适当演示,这样可以提高学生实验的成功率,激发学生对实验的兴趣。在学生实验过程中要加强巡回指导,发现不规范的操作要及时纠正。对于操作能力较差的学生给予具体的帮助,使其树立信心,尽快掌握规范的操作技能。验证性实验可以加强对所学理论知识的巩固,加深对物质性质的认识,增强学生的记忆力。另外,为了使学生实验有更多的收获,学生进实验室做实验先检查预习单,无预习单不能做实验。

三、指导学生观察实验现象

要有目的、有计划、有步骤地指导学生观察实验现象。要求学生观察实验变化的每一细微处并加以记录,对实验中出现的一些现象,引导学生自己观察和思考找出答案。在实验教学中用这种形式来解答学生的问题,既能激发学生的兴趣,又能培养学生的思维能力,训练学生的观察能力。

要做到观察认真、仔细,要有侧重,不被实验的表面现象所迷惑,从观察中探索实验的本质。如:为了验证松节油和溴水能发生加成反应,要求指导学生观察:①溴水是否褪色。②是否有新物质生成。③生成新物质的颜色、状态、水溶性。

如果教师对观察实验现象不加以指导,那么学生观察到的只是溴水褪色,至于生成物的颜色、状态、水溶性就容易被忽略,而化学变化的本质却是有新物质生成。因此,引导学生观察实验现象,可以提高实验教学的质量,有利于培养学生的观察能力,思维能力。

四、指导学生思考,分析实验现象

一个实验究竟会得到什么结论?学生往往并不全知道。只有对实验现象全部记录进行思考和分析,才能得出结论。通过自己的观察、探索、分析实验提供的信息,然后去粗存精,去伪存真,由此及彼,由表及里,透过现象看本质,将获得的感性知识上升到理性知识,进而转化为理论知识,提高自身的素质。对于实验中出现与理论不符合的现象,要引导学生找出原因,分析结果。也可以作为讨论题让大家发表意见和见解,以达到解决问题的目的。

另外,实验做完的当天学生必须写好实验报告,统一交授课教师。实验报告是学生学习化学实验中不可疏漏的重要环节,实验是运用理论知识指导实践,写实验报告则是将实验结果升华为理性认识,是对实验作全面的总结。在实验报告中强调对实验问题的讨论,并把它作为衡量实验报告质量的一个重要标准,使学生在实验过程中积极主动的去观察,并通过思考在实践中提高解决问题的能力,这样就使学生的智力培养和开发贯穿于整个实验教学过程中。

通过写实验报告不仅可以使学生巩固加深基础知识和实验操作,而且可以培养学生分析问题、解决问题的能力。

五、引导学生自己动手设计实验

验证性实验是学生单纯的模仿和重复前人的实验,长期“照方抓药”会使学生感到乏味,甚至挫伤学生 做实验的积极性。因此,在教学中,教师可以尝试性地将验证性实验改成由学生思考,自己设计、操作的实验,收到了良好的效果。通过这种方法能极大地提高学生做实验的兴趣和参与意识,这不仅促进了学生对理论知识的加深巩固,同时又给学生一个创新的天地,可以大大激发学生学习化学的积极性。

具体的方法是:先由学生将自己设计的实验计划上报教师,经教师审核许可后,方能进行,对学生自行 设计和动手操作的实验,教师首先予以肯定,并给予一定的加分鼓励。至于实验结果如何,实验成功与否,教师都应该给予热情的支持。学生的智慧是无限的,只要教师加以积极的引导,为学生创造自己动手设计实验的机会。

六、实行实验考核、培养实用人才

实验考核首先要强调实验课的重要性,实验考核的方法和要求,讲明理论成绩与实验成绩的比例。目的是让学生重视平时实验操作训练。为此,在实验教学结束前一周就要拿出实验考试方案。实验试题根据教学大纲拟定,题目由学生抽签而定,由学生自己准备试题,并要求在规定时间内完成,每组由教师和实验老师负责监考和评分。

七、小结

篇5:算法与数据结构实验指导书

计 算 机 科 学 与 技 术 学 院

算 法 与 数 据 结 构

实 验 指 导 书

杨俊、徐塞虹、漆涛 编著

2006年9月 算法与数据结构 实验指导书

目录

实验要求....................................................................................................................................3 试验

一、约瑟夫环..............................................................................…………………..……4 试验

二、长整数四则运算运算………………………………………………………………4 实验三、八皇后.....................................……..........................................................................5 实验

四、骑士遍历......................................……………………..............................................5 实验

五、桌面计算器...............................……………..............................................................6 实验

六、平衡排序二叉树....................…...…….....................................................................6 试验

七、多重集合的实现……......................................………………………………………7 试验

八、图论………………………………………………………………………….……..8 实验

八、内部排序性能的比较..........………………….............................................................8 教材及主要参考文献………………………………………………………………………………..9 2 北京邮电大学 计算机科学与技术学院 算法与数据结构 实验指导书

实验要求

一、本课程在讲课期间需要做上机实验,目的之一是检查学生对所学算法的掌握和理解程度;其次是锻炼学生的团队合作精神。

二、成绩:

1、编码:占整个实验成绩的50%;

2、测试:占整个实验成绩的20%;

3、文档:占整个实验成绩的30%。

三、按时提交上机文档,实验文档包含以下各项:

1、问题描述:实验题目、内容和要求;

2、算法思路:实验小组对问题的解决方法的文字描述;

3、算法描述:用类算法语言等对算法进行描述;

4、源程序及驱动程序:上机实验编制的代码源程序及程序运行环境;

5、测试数据:对算法的测试用例;

6、结果分析和结论:对算法及测试结果的分析及结论;

7、心得体会:通过实验获得的心得体会;

8、分工及签名:最后是小组成员的分工及签名。

北京邮电大学 计算机科学与技术学院-1-算法与数据结构 实验指导书

实验

一、约瑟夫环

一、实验类别:设计型实验。

二、问题描述:约瑟夫环问题是:n个人p0,p1,…pn 围坐成一个圆环。每个人pk持有一个秘密的数字ck。0 < ck <= m。开始时随机选取一个数 c = c0。每个人从p0 开始从1开始报数。报到数c 的人出对。然后以出队的人的秘密数字作为新的c 值。从出队者的下一个人顺时针从1 开始再报数。直到所有的人全部出队。

三、实验目的:检查学生对各种线性表的实现的掌握程度。

四、实验学时:2小时

五、实验组人数:1人。

六、实验设备环境:计算机。

七、实验原理及要点(知识点):各种队列的实现。

八、实验内容和要求:至少用3种以上的线性表来完成此试验。可以在带头节点的和不带头节点的线性表、循环的和非循环线性表、动态链表和静态链表以及向量(数组)之间选择三种。从空表开始,为每个人生成一个随机数。然后将此人加入到线性表之中。

九、可研究与探索的问题:给出各种实现的优缺点比较。

十、验收及实验报告要求:现场操作及运行效果验收。要求程序必须上机编译通过并且正确运行。给出试验报告。给出各种线性表实现的优缺点分析。

实验

二、长整数四则运算

一、实验类别:验证实验。

二、问题描述:计算机CPU本身可以做32位或者64位的整数四则运算。本试验要求对任意大小的整数实现其四则运算。将一个整数N表示为

N = ±(d0 + d1*B + d2*B2 + ….+ bk*Bk)

其中 1< B <= 256 为一个取定的整数。0 <= dk < B。用线性表存储{bk}。给出整数的四则运算程序。

三、实验目的:对具体的问题选择适当的线性表实现。

四、实验学时:2小时

五、实验组人数:3人。

六、实验设备环境:计算机。

七、实验原理及要点(知识点):各种队列的实现。

八、实验内容和要求:至少用2种以上的线性表来完成此试验。比较不同线性表实现的速度。

九、可研究与探索的问题:1)对具体问题选择合适的线性表实现。2)B 的选取问题。可 否选择更大的基B。B的选择所应考虑的因素。

十、验收及实验报告要求:现场操作及运行效果验收。要求程序必须上机编译通过并且正确运行。给出试验报告。能够得出用向量(数组)实现的线性表速度最快。

实验三、八皇后问题

一、实验类别:设计型实验。

二、问题描述:在n*n 的国际象棋棋盘上放置n个皇后,使每个皇后不受其他皇后的攻击。

三、实验目的:检查学生对堆栈和递归程序掌握程度。

四、实验学时:2小时

五、实验组人数:1人。

六、实验设备环境:计算机。

七、实验原理及要点(知识点):递归程序与堆栈

八、实验内容和要求: 分别用递归和堆栈完成此试验。统计程序运行时间与问题规模n 的关系。

九、可研究与探索的问题:问题的复杂度。当n 比较大时,讨论提高程序运行的方法。

十、验收及实验报告要求:现场操作及运行效果验收。要求程序必须上机编译通过并且正确运行。给出试验报告。找出程序运行速度的瓶颈。

实验

四、骑士遍历

一、实验类别:设计型实验。

二、问题描述:在国际象棋n*n的棋盘中,一匹马从棋盘中任意一格出发,要求用n2-1步走完所有的n2个格子。每个格子走且只走过一次。应如何走? 试给出算法实现。

三、实验目的:检查学生对堆栈与回溯算法的掌握。

四、实验学时:2小时

五、实验组人数:3人。

六、实验设备环境:计算机。

七、实验原理及要点(知识点):堆栈与回溯

八、实验内容和要求:用堆栈完成此试验。统计程序运行时间与问题规模n 的关系。

九、可研究与探索的问题:怎样枚举所有马下一步可走的位置。选择下一步所走位置的策略。注意由于这个程序非常耗时,在初期程序调试时应取较小的n。

十、验收及实验报告要求:现场操作及运行效果验收。要求程序必须上机编译通过并且正确运行。给出试验报告。找出程序运行速度的瓶颈。给出不同选择策略的程序运行 速度的比较结果。

实验

五、桌面计算器(表达式求值)

一、实验类别:设计型实验。

二、问题描述:模仿Unix系统下的dc命令。输入表达式字符串,按回车键后给出表达式的值。操作数为实数。

1)操作符有 “+”、“-”、“*”、“/”、“^”(乘方)

2)还可以有临时变量。用法如 pi = 3.1415926,r = 3, r*pi^2 3)还可以有事先定义的函数如:“sin()”(正弦)、“cos()”(余弦)、“log()”(对数)、“ln()”(自然对数)等函数。

三、实验目的:检查学生用堆栈解决实际问题。为本课程后续的内容提供伏笔。也为后继的课程如编译原理预习。

四、实验学时:2小时

五、实验组人数:3人。

六、实验设备环境:计算机。

七、实验原理及要点(知识点):堆栈,线性表,命令行参数的处理。

八、实验内容和要求:学生应至少应实现处理五个运算符:“+”、“-”、“*”、“/”、“^”(乘方)。可以用一个线性表来存储临时变量。另一个线性表来存储预定义的函数名。

九、可研究与探索的问题:查找临时变量名的不同方法。如哈希表,二叉树。

十、验收及实验报告要求:现场操作及运行效果验收。要求程序必须上机编译通过并且正确运行。给出试验报告。

实验

六、平衡排序二叉树

一、实验类别:设计型实验。

二、问题描述:随机生成一组整数p0,p1,…pn-1。将这组整数按生成的次序插入到一个平衡排序二叉树中。然后将p0,p1,…pn-1随机重新排列为q0,q1,…qn-1。再按照次次序将这些整数从生成的平衡排序二叉树删除。

三、实验目的:平衡排序二叉树的插入和删除。

四、实验学时:2小时

五、实验组人数:3人。

六、实验设备环境:计算机。

七、实验原理及要点(知识点):平衡排序二叉树的插入和删除中的旋转。

八、实验内容和要求:统计在平衡排序二叉树的插入和删除过程中各种旋转的出现次数。

九、可研究与探索的问题:研究平衡排序二叉树与一般的排序二叉树在插入和删除方面的性能比较。

十、验收及实验报告要求:现场操作及运行效果验收。要求程序必须上机编译通过并且正确运行。给出试验报告。给出在均匀的随机分布下,平衡排序二叉树与一般排序二叉树的性能比较。

实验

七、多重集合的实现

一、实验类别:设计型实验。

二、问题描述:实现数学上多重集合。所谓的多重集合类似于集合,但是一件东西可以放置多个副本。就如一个菜篮子里面可以放两个苹果。

三、实验目的:查找结构的各种实现。

四、实验学时:2小时

五、实验组人数:3人。

六、实验设备环境:计算机。

七、实验原理及要点(知识点):平衡排序二叉树的插入和删除、遍历,查找。哈希查找结构。

八、实验内容和要求: 假设集合中包含的元素是可以排序的。将多重集合封装成一个类。具体的实现可以是中序线索化的平衡排序二叉树,或者带父节点指针的平衡排序二叉树。多重集合的界面如下:

template //假设类型 T 是可以排序的 class Multi_set

{

Multi_set(void);//构造函数,初始化为空集合~Multi_set(void);//析构函数

Multi_set& operator=(Multi_set const a);//重载运算符=

bool contains(T const& v)const;//如果集合包含v 则返回true,否则返回false

Multi_set& operator+=(Multi_set const&a);//将集合a 并到自身中。

Multi_set& operator-=(Multi_set const& a);//自身减去集合a

Multi_set& operator-=(T const& a);//自身减去一个元素a

};//~class Multi_set

//返回集合a,b的并

template Multi_set Mult_set:: operator+(Multi_set const& a,Multi_set const& b);

//返回集合a,b的差

template Multi_set Mult_set:: operator-(Multi_set const& a,Multi_set const& b);

//返回 a –{v}

template

Multi_set Multi_set::operator-(Multi_set const& a,T const& v);

九、可研究与探索的问题:哈希函数的选取。比较哈希与平衡排序二叉树的优缺点、性能和速度。

十、验收及实验报告要求:现场操作及运行效果验收。要求程序必须上机编译通过并且正确运行。给出试验报告。给出平衡排序二叉树实现的多重集合和用哈希实现的多重集合的性能比较。

实验

八、图论

一、实验类别:设计型实验。

二、问题描述:实现图论中的各种算法。

1)最小代价生成树的Krscal 算法和Prim算法。2)单源点的最短路径的Dijstra 算法。3)深度优先遍历与广度优先遍历。4)拓扑排序

5)求所有节点之间的最短路径Floyd算法

(在这五个小题中只要选作一个即可。)

三、实验目的:学习根据不同的运算来选取不同的存储结构。

四、实验学时:2小时

五、实验组人数:3人。

六、实验设备环境:计算机。

七、实验原理及要点(知识点):图论中的各种算法及其复杂度。根据不同的操作来决定图的存储结构。

八、实验内容和要求:至少实现上面五个小题目中的一个。从文件中读入一个图的信息。

九、可研究与探索的问题:高级数据结构如堆、并查集在图论算法中的应用。

十、验收及实验报告要求:现场操作及运行效果验收。要求程序必须上机编译通过并且正确运行。给出试验报告。给出在均匀的随机分布下,平衡排序二叉树与一般排序二叉树的性能比较。

实验

九、内部排序性能的比较

一、实验类别:设计型实验。

二、问题描述:随机生成一组整数p0,p1,…pn-1。对这组数据进行排序。

三、实验目的:比较不同排序算法的性能。

四、实验学时:2小时

五、实验组人数:3人。

六、实验设备环境:计算机。

七、实验原理及要点(知识点):各种内部排序算法。

八、实验内容和要求: 1)实现插入排序,选择排序,希尔排序,堆排序以及快速排序。2)快速排序的多种版本。3)对单链表实现归并排序。4)基数排序。

5)对小型问题(n = 10)、中型问题(n = 1000)以及大型问题(n = 1百万)分别统计不同排序算法的键值比较次数、键值移动次数以及程序运行时间。

26)排序算法的时间复杂度可以有O(n)和 O(n log n)。对相同复杂度的算法,给出他们运行时间与时间复杂度的比值。

九、可研究与探索的问题:研究快速排序算法的不同改进方法。自省排序算法。只需要移动而不需要交换的快速排序方法。

十、验收及实验报告要求:现场操作及运行效果验收。要求程序必须上机编译通过并且正确运行。给出试验报告。给出在均匀的随机分布下,对大中小问题的最快的排序算法。

教材及主要参考文献

[1] 严蔚敏、吴伟民,数据结构习题集,清华大学出版社,1999年

[2] John R.Hubbard, Data Structures with C++, China Machine Press, 2002.[3] Mark Allen Weiss, Data Structures and Problem Solving Using C++, 2ed, 清华大学出版社。2004年。[4] Robert Sedgewick,Algorithms in C Part 1 – 4: Fundamentals, Data Structures, Sorting, rdSearching, 3, 中国电力出版社,2003年。

篇6:软件体系结构实验指导书

实验一

系统的用例模型

实验名称:系统的用例模型

实验类型: 设计性实验 学

时:2课时

一、实验目的

1.熟悉用例图的基本功能和使用方法。

2.锻炼结合给定题目,进行有效需求分析的能力。3.掌握如何使用建模工具绘制用例图的方法。

二、实验器材

1.计算机一台。

2.UML建模工具,比如软件ArgoUML,Rational Rose 或StarUML。

三、实验内容

在理解用例图的基本功能和使用方法的基础上,结合具体问题,完成对系统的需求建模,得到用例模型后,应针对每个用例进行业务分析,说明其具体的业务流程。用Rational Rose或StarUML工具软件绘制系统的用例图。下文以Rational Rose为例讲解基本步骤。

四、实验步骤

1.结合实际给定题目,完成系统的需求建模。

2.针对每个用例进行业务分析。以图书管理系统中“删除读者信息”用例为例来说明实验具体步骤。

(1)分析:在图书管理系统中,管理员首先登录系统,系统验证通过后,管理方可向系统查询数据,在查询后,系统会给出提示,有没有找到相关的数据,管理员根据系统查询的返回结果,进行下一步的操作,就是删除读者,在删除的过程中,系统会对查询得到的结果判断该记录是否可以删除,若可以删除,则给删除提示,若不能删除,也给相关的提示信息。

(2)根据分析结果,书写业务流程,一般包含以下信息:

①管理员在录入界面,输入待删除的读者名;

②“业务逻辑”组件在数据库中,查找待删除的读者名; ③如果不存在,则显示出错信息,返回步骤①,如果存在则继续; ④“业务逻辑”组件判断“待删除的读者”是否可以删除; ⑤如果不可以,则显示出错信息,返回步骤⑧,如果可以则继续; ⑥在数据库中,删除相关信息; ⑦显示删除成功信息; ⑧结束。

3.根据分析结果,绘制用例图。以图书管理系统中“删除读者信息”用例为例说明具体绘图步骤:(1)在用例图上双击main,出现如图1.1所示,为绘制用例图做好准备。

图1.1(2)在图中的工具栏选取Actor图标,在右边的图中添加一个Actor,并输入名称:administrator,如图1.2所示。

(3)在左边的工具栏中,选取用例的图标,在右边的图中画出一个用例,并输入用例的名称:login。

图1.2(4)按照步骤(3),绘制出如图1.4和图1.5的两个用例。

图1.3

图1.4

图1.5(5)在绘出了用例后,接下来的是绘制参与者与用例实现,如图1.6所示。

图1.6

(6)根据步骤(5),同时完成如图1.7和图1.8。此时,删除读者用例图就到此完成。其系统查询读者信息等其他的功能会在时序图和活动图中描绘。

(7)根据分析情况,进一步添加或细化用例图。

图1.7

图1.8

五、实验报告要求

1. 说明系统的需求建模结果,对主要用例整理用例图。2. 小结实验心得体会。

实验二 系统的类模型

实验名称:系统的类模型

实验类型: 设计性实验 学

时:2课时

一、实验目的

1.理解类的基本概念。

2.掌握如何从需求分析中抽象出类的方法。

3.掌握在ArgoUML,Rational Rose或StarUML中绘制类的操作方法。

二、实验器材

1.计算机一台。

2.ArgoUML,Rational Rose 或StarUML工具软件。

三、实验内容

完成实验一后,对给定题目的系统的需求的初步分析,得出系统的用例图,通过对用例的业务流程的分析,我们可以初步了解系统的业务处理流程。本实验需要对系统进行静态建模,这就需要从系统的用例图去寻找和发现类。用Rational Rose或StarUML工具软件绘制系统的类图。下文以Rational Rose为例讲解基本步骤。

四、实验步骤

1.分析:由前面试验对需求的分析抽象出类。2.绘制类图的步骤:

(1)打开前面初步构建的UML模型文件;(2)打开Rose中的逻辑视图(Logical View),选择分析模型(analysis model)目录。并在其下创建一个子目录并命名为:“图书馆业务功能”。

(3)用鼠标右击“图书馆业务功能”在弹出来的菜单中选择“New→Class diagram”项,创建类图,如图2.1所示。

(4)双击新建的类图,并点右边控件集中选中的类的图标,并用鼠标在图中分别拖出一个类图,并命名为Book,如图2.2所示。

图2.1

图2.2(5)接下来的一步为设置类的属性,在新的类中双击该类,在打开属性面板中,可以看到在此可以设置类的属性和方法等其他的信息,图2.3所示;后撞击Attributes这个栏目,此栏目为设置类的属性的选项,在图中间的单击右键,可以看到有一个“Insert”的选项,选中这个选项,图2.4所示,后在出现的对话框中输入相关信息如图2.5所示;如书本的ISBN号,在Type这个方框内输入此属性的类型值,同时可以看到一栏可以设置此属性的访问权限,一般这些属性都设置Private这个权限,如图2.6所示。这个类的其他属性也可以按照以上的做法设置,最后得到的结果是图2.7所示。

图2.3 图2.4

图2.5 图2.6(6)设置好类的属性,现在来设置类的方法(也是操作),双击类后在弹出的菜单上选operations这个选项,可以看到图2.8所示,在图中的空白地方,单击右键,在弹出的菜单中选insert这个选项,也就只有这个选项可用,见图2.9,接着输入方法名,同时可以设置该方法的返回类型,也可以在Documentations的方框内填写一些相关的方法说明,如图2.12所示,设置好该方法的访问权限,见图2.13。类的其他方法也可以按上面来设置好,最后,得到该类的其他方法见类2.14。

图2.7 图2.8

图2.9

图2.11

图2.10

图2.12

图2.13 图2.14(7)至此,类的方法和属性都设置好了,如图2.15所示。

图2.15(8)按照上面的步骤设置好所有类的属性和方法。

(9)为各个类添加关系,由关联、泛化、依赖等关系来静态描述业务。

五、实验报告要求

1.整理实验结果。2.小结实验心得体会。实验三 系统的状态建模

实验名称:系统的状态建模

实验类型: 设计性实验 学

时:2课时

一、实验目的

1.熟悉状态图的基本功能和使用方法。2.掌握如何使用建模工具绘制状态图方法。

二、实验器材

1.计算机一台。

2.ArgoUML,Rational Rose或StarUML 工具软件。

三、实验内容

完成实验一后,对给定题目的系统的需求的初步分析,得出系统的用例图,通过对用例的业务流程的分析,我们可以初步了解系统的业务处理流程,但对业务处理过程的处理状态间转换了解仍不够,这不利于设计人员对系统业务的进一步理解,而状态图能从对象的动态行为的角度去描述系统的业务活动。因此,在本实验主要完成用例的状态图。

四、实验步骤

1.业务分析:由前面实验对用例的描述和分析得到业务动态行为的状态分析。以用例“还书”为例,还书业务的动态行为是由:空闲(idle)、图书查找(finding)、还书(reversion)、失败(Failure)、归还成功(Success)5种状态及激活相互转换的事件。

2.绘制状态图。

还书的状态图,还书的主要业务都是由管理员来完成,首先管理员必须先登录系统,并通过验证后,便可以进行下一步的操作,查找该书的相关信息,如存在,则进行还书操作,如不存在该信息,则给出提示信息;

绘图步骤:

(1)在用例图中的还书(revesion)用例,单击右键,如图3.1所示,新建一个状态图,命名为revesion状态图,图3.2所示。

图3.1

图3.2(2)双击“receivesion”状态图,展开后,在左边的工具栏上选取一个实心圆点,此结点为开始结点,图3.3所示;当还书的时候,操作者先要询问系统的状态,如果系统忙,操作者则必需等待,因此,得到系统的两种状态,如图3.5所示。

图3.3

图3.4

图3.5(3)操作者在询问系统和状态后,得到的图3.6所示两种状态,如果系统忙,操作者必需要等待、结束,如图3.7和图3.8所示,重返步骤(1)。

图3.6

图3.7

图3.8(4)如系统空闲,则进行对还书的信息进行查询操作,图3.9所示;查询也有两种结果,一是查询得到该书的相关信息,二查询不到该书的相关信息;则此时有两种状态,需要建立两种状态,如图3.10所示。

图3.9

图3.10(5)最后,操作者进行了操作后,系统会给出操作的结果给操作者;操作成功或失败,都会有提示信息给出。整个的还书的过程便完成;图3.11所示。

(7)根据分析设计情况,进一步添加或细化状态图。

图3.11

五、实验报告要求

上一篇:技术研发岗位职责下一篇:坚持的记叙文800字作文