图的基本操作 实验报告
图的基本操作 实验报告
图的基本操作实验报告图的基本操作实验报告引言:图是一种常见的数据结构,广泛应用于计算机科学和其他领域。
本实验报告旨在介绍图的基本操作,包括创建图、添加节点和边、遍历图等,并通过实验验证这些操作的正确性和效率。
实验目的:1. 了解图的基本概念和术语;2. 掌握图的创建和修改操作;3. 熟悉图的遍历算法;4. 分析图的操作的时间复杂度。
实验过程:1. 创建图首先,我们需要创建一个图对象。
图可以用邻接矩阵或邻接表来表示。
在本实验中,我们选择使用邻接表来表示图。
通过遍历输入的节点和边信息,我们可以创建一个包含所有节点和边的图。
2. 添加节点和边在创建图对象后,我们可以通过添加节点和边来构建图的结构。
通过输入节点的标识符和边的起始和结束节点,我们可以在图中添加新的节点和边。
添加节点和边的操作可以通过修改邻接表来实现,将节点和边的信息存储在对应的链表中。
3. 遍历图遍历图是图操作中常用的操作之一。
通过遍历图,我们可以访问图中的所有节点和边。
在本实验中,我们选择使用深度优先搜索(DFS)算法来遍历图。
DFS算法通过递归的方式遍历图中的节点,先访问当前节点,然后再递归地访问与当前节点相邻的节点。
4. 分析时间复杂度在实验过程中,我们记录了图的操作所花费的时间,并分析了它们的时间复杂度。
通过对比不同规模的图的操作时间,我们可以评估图操作的效率和可扩展性。
实验结果:通过实验,我们成功创建了一个图对象,并添加了多个节点和边。
我们还通过DFS算法遍历了图,并记录了遍历的顺序。
实验结果表明,我们的图操作实现正确,并且在不同规模的图上都能够高效地工作。
讨论与结论:本实验报告介绍了图的基本操作,并通过实验验证了这些操作的正确性和效率。
通过实验,我们了解到图是一种重要的数据结构,可以用于解决许多实际问题。
同时,我们还深入分析了图操作的时间复杂度,为后续的图算法设计和优化提供了参考。
总结:通过本次实验,我们对图的基本操作有了更深入的了解。
数字图像处理实验报告
目录实验一:数字图像的基本处理操作 (4):实验目的 (4):实验任务和要求 (4):实验步骤和结果 (5):结果分析 (8)实验二:图像的灰度变换和直方图变换 (9):实验目的 (9):实验任务和要求 (9):实验步骤和结果 (9):结果分析 (13)实验三:图像的平滑处理 (14):实验目的 (14):实验任务和要求 (14):实验步骤和结果 (14):结果分析 (18)实验四:图像的锐化处理 (19):实验目的 (19):实验任务和要求 (19):实验步骤和结果 (19):结果分析 (21)实验一:数字图像的基本处理操作:实验目的1、熟悉并掌握MATLAB、PHOTOSHOP等工具的使用;2、实现图像的读取、显示、代数运算和简单变换。
3、熟悉及掌握图像的傅里叶变换原理及性质,实现图像的傅里叶变换。
:实验任务和要求1.读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内分成三个子窗口来分别显示RGB图像和灰度图像,注上文字标题。
2.对两幅不同图像执行加、减、乘、除操作,在同一个窗口内分成五个子窗口来分别显示,注上文字标题。
3.对一幅图像进行平移,显示原始图像与处理后图像,分别对其进行傅里叶变换,显示变换后结果,分析原图的傅里叶谱与平移后傅里叶频谱的对应关系。
4.对一幅图像进行旋转,显示原始图像与处理后图像,分别对其进行傅里叶变换,显示变换后结果,分析原图的傅里叶谱与旋转后傅里叶频谱的对应关系。
:实验步骤和结果1.对实验任务1的实现代码如下:a=imread('d:\');i=rgb2gray(a);I=im2bw(a,;subplot(1,3,1);imshow(a);title('原图像');subplot(1,3,2);imshow(i);title('灰度图像');subplot(1,3,3);imshow(I);title('二值图像');subplot(1,3,1);imshow(a);title('原图像');结果如图所示:图原图及其灰度图像,二值图像2.对实验任务2的实现代码如下:a=imread('d:\');A=imresize(a,[800 800]);b=imread('d:\');B=imresize(b,[800 800]);Z1=imadd(A,B);Z2=imsubtract(A,B);Z3=immultiply(A,B);Z4=imdivide(A,B);subplot(3,2,1);imshow(A);title('原图像 A'); subplot(3,2,2);imshow(B);title('原图像 B'); subplot(3,2,3);imshow(Z1);title('加法图像'); subplot(3,2,4);imshow(Z2);title('减法图像'); subplot(3,2,5);imshow(Z3);title('乘法图像'); subplot(3,2,6);imshow(Z2);title('除法图像');结果如图所示:3.对实验任务3的实现代码如下:s=imread('d:\');i=rgb2gray(s);i=double(i);j=fft2(i);k=fftshift(j); %直流分量移到频谱中心I=log(abs(k)); %对数变换m=fftshift(j); %直流分量移到频谱中心RR=real(m); %取傅里叶变换的实部II=imag(m); %取傅里叶变换的虚部A=sqrt(RR.^2+II.^2);A=(A-min(min(A)))/(max(max(A)))*255;b=circshift(s,[800 450]);b=rgb2gray(b);b=double(b);c=fft2(b);e=fftshift(c);I=log(abs(e));f=fftshift(c);WW=real(f);ZZ=imag(f);B=sqrt(WW.^2+ZZ.^2);B=(B-min(min(B)))/(max(max(B)))*255;subplot(2,2,1);imshow(s);title('原图像');subplot(2,2,2);imshow(uint8(b));title('平移图像');subplot(2,2,3);imshow(A);title('离散傅里叶变换频谱');subplot(2,2,4);imshow(B);title('平移图像离散傅里叶变换频谱');结果如图所示:4.对实验任务4的实现代码如下:s=imread('d:\');i=rgb2gray(s);i=double(i);j=fft2(i);k=fftshift(j);I=log(abs(k));m=fftshift(j);RR=real(m);II=imag(m);A=sqrt(RR.^2+II.^2);A=(A-min(min(A)))/(max(max(A)))*255;b=imrotate(s,-90);b=rgb2gray(b);b=double(b);c=fft2(b);e=fftshift(c);I=log(abs(e));f=fftshift(c);WW=real(f);ZZ=imag(f);B=sqrt(WW.^2+ZZ.^2);B=(B-min(min(B)))/(max(max(B)))*255;subplot(2,2,1);imshow(s);title('原图像');subplot(2,2,2);imshow(uint8(b));title('平移图像');subplot(2,2,3);imshow(A);title('离散傅里叶频谱');subplot(2,2,4);imshow(B);title('平移图像离散傅里叶频谱');结果如图所示::结果分析对MATLAB软件的操作开始时不太熟悉,许多语法和函数都不会使用,写出程序后,调试运行,最开始无法显示图像,检查原因,是有些标点符号没有在英文状态下输入和一些其他的细节,学会了imread(),imshow(),rgb2gray()等函数。
图层基本操作实验报告
图层基本操作实验报告
一、实训(实验)目的:
巩固图层、通道、蒙版功能所学知识
二、实训所涉及的知识点:
图层基本操作
通道的应用
图层蒙版的应用
矢量蒙版的应用
蒙版面板的功能的应用
三、实训课时:
2课时
四、实训内容(含项目、任务、图案及步骤)
任务一:利用如图所示的书签素材图,完成最终所示的书签效果图。
提示:利用填充层制作书签背景图案;运用图层混合模式去除素材“竹”的白色底色;运用“圆角矩形工具”绘制半透明形状;合并图层后,制作圆孔,并添加图层样式,完成单张书签的制作。
任务二:利用如图所示的素材,借助通道功能,选取人物轮廓,复制到如图所示的背景中,完成如图所示的效果。
任务三:利用所学的图层蒙版知识,将如图所示的“窗户”和图所示的“童话世界”合成图像“窗外”,并利用调整层将窗户调整为粉色,如图所示。
任务四:运用所学的蒙版知识,将四张婚纱素材合成制作如图所示的婚纱效果图。
提示:运用快速蒙版选取婚纱素材1中的人物,并移至背景图像中;再利用图层蒙版实现渐隐的融合效果;对婚纱素材2添加图层蒙版后,添加投影、斜面和浮雕效果;对婚纱素材3添加带羽化的心形矢量蒙版。
五、实训(实验)心得、体会、收获(由学生填写):
六、实训(实验)成绩及教师评语:。
数据结构试验报告-图的基本操作
中原工学院《数据结构》实验报告学院:计算机学院专业:计算机科学与技术班级:计科112姓名:康岩岩学号:201100814220 指导老师:高艳霞2012-11-22实验五图的基本操作一、实验目的1、使学生可以巩固所学的有关图的基本知识。
2、熟练掌握图的存储结构。
3、熟练掌握图的两种遍历算法。
二、实验内容[问题描述]对给定图,实现图的深度优先遍历和广度优先遍历。
[基本要求]以邻接表为存储结构,实现连通无向图的深度优先和广度优先遍历。
以用户指定的结点为起点,分别输出每种遍历下的结点访问序列。
【测试数据】由学生依据软件工程的测试技术自己确定。
三、实验前的准备工作1、掌握图的相关概念。
2、掌握图的逻辑结构和存储结构。
3、掌握图的两种遍历算法的实现。
四、实验报告要求1、实验报告要按照实验报告格式规范书写。
2、实验上要写出多批测试数据的运行结果。
3、结合运行结果,对程序进行分析。
【设计思路】【代码整理】#include "stdafx.h"#include <iostream>#include <malloc.h>using namespace std;typedef int Status;#define OK 1#define ERROR 0#define OVERFLOW -1#define MAX_SIZE 20typedef enum{DG,DN,UDG,UDN}Kind;typedef struct ArcNode{int adjvex; //顶点位置struct ArcNode *nextarc; //下一条弧int *info; //弧信息};typedef struct{char info[10]; //顶点信息ArcNode *fistarc; //指向第一条弧}VNode,AdjList[MAX_SIZE];typedef struct{AdjList vertices;int vexnum,arcnum; //顶点数,弧数int kind; //图的种类,此为无向图}ALGraph;//这是队列的节点,仅用于广度优先搜索typedef struct Node{int num;struct Node* next;};//队列的头和尾typedef struct{Node * front;Node *rear;}PreBit;int LocateV ex(ALGraph G,char info[]);//定位顶点的位置Status addArcNode(ALGraph &G,int adjvex); //图中加入弧Status CreatGraph(ALGraph&G);//创建图的邻接表Status DFSTraverse(ALGraph G);//深度优先搜索Status BFSTraverse(ALGraph G);//广度优先搜索Status DFS(ALGraph G,int v);//深度优先搜索中的数据读取函数,用于递归bool visited[MAX_SIZE]; // 访问标志数组//初始化队列Status init_q(PreBit&P_B){P_B.front=P_B.rear=(Node*)malloc(sizeof(Node));if(!P_B.front){exit(OVERFLOW);}P_B.front->next=NULL;}//将数据入队Status en_q(PreBit & P_B,int num){Node *p=(Node*)malloc(sizeof(Node));if(!p){exit(OVERFLOW);}p->num=num;p->next=NULL;P_B.rear->next=p;P_B.rear=p;return OK;}//出队Status de_q(PreBit & P_B){if(P_B.front==P_B.rear){return ERROR;}Node* p=P_B.front->next;P_B.front->next=p->next;if(P_B.rear==p){P_B.rear=P_B.front;}free(p);return OK;}Status CreatGraph(ALGraph&G){cout<<"请输入顶点数目和弧数目"<<endl;cin>>G.vexnum>>G.arcnum;//依次输入顶点信息for(int i=0;i<G.vexnum;i++){cout<<"请输入顶点名称"<<endl;cin>>G.vertices[i].info;G.vertices[i].fistarc=NULL;}//依次输入弧信息for(int k=1;k<=G.arcnum;k++){char v1[10],v2[10]; //用于表示顶点名称的字符数组int i,j; //表示两个顶点的位置BACK: //返回点cout<<"请输入第"<<k<<"条弧的两个顶点"<<endl;cin>>v1>>v2;i=LocateV ex(G,v1); //得到顶点v1的位置j=LocateV ex(G,v2); //得到顶点v2的位置if(i==-1||j==-1){ //头信息不存在则返回重输cout<<"不存在该节点!"<<endl;goto BACK; //跳到BACK 返回点}addArcNode(G,i); //将弧的顶点信息插入表中addArcNode(G,j);}return OK;}//倒序插入弧的顶点信息Status addArcNode(ALGraph &G,int adjvex){ArcNode *p; //弧节点指针p=(ArcNode*)malloc(sizeof(ArcNode));p->adjvex=adjvex;p->nextarc=G.vertices[adjvex].fistarc;//指向头结点的第一条弧G.vertices[adjvex].fistarc=p; //头结点的第一条弧指向p,即将p作为头结点的第一条弧return OK;}//定位顶点的位置int LocateV ex(ALGraph G,char info[]){for(int i=0;i<G.vexnum;i++){if(strcmp(G.vertices[i].info,info)==0){ //头结点名称与传入的信息相等,证明该头节点存在return i; //此时返回位置}}return -1;}//深度优先搜索Status DFSTraverse(ALGraph G){for(int v=0;v<G.vexnum;v++){visited[v]=false;}char v1[10];int i;BACK:cout<<"请输入首先访问的顶点"<<endl;cin>>v1;i=LocateV ex(G,v1);if(i==-1){cout<<"不存在该节点!"<<endl;goto BACK;}DFS(G,i);return OK;}//深度优先搜索递归访问图Status DFS(ALGraph G,int v){visited[v]=true;cout<<G.vertices[v].info<<" ";//输出信息ArcNode *p;p=G.vertices[v].fistarc; //向头节点第一条while(p) //当弧存在{if(!visited[p->adjvex]){DFS(G,p->adjvex); //递归读取}p=p->nextarc;}return OK;}//广度优先搜索Status BFSTraverse(ALGraph G){for(int v=0;v<G.vexnum;v++){visited[v]=false;}char v1[10];int v;BACK:cout<<"请输入首先访问的顶点"<<endl;cin>>v1;v=LocateV ex(G,v1);if(v==-1){cout<<"不存在该节点!"<<endl;goto BACK;}PreBit P_B;init_q(P_B);ArcNode *p;visited[v]=true;cout<<G.vertices[v].info<<" ";//输出信息en_q(P_B,v); //将头位置v入队while(P_B.front!=P_B.rear){//当队列不为空时,对其进行访问int w=P_B.front->next->num;//读出顶点位置de_q(P_B);//顶点已经访问过,将其出队列p=G.vertices[w].fistarc;//得到与顶点相关的第一条弧while(p){if(!visited[p->adjvex]){en_q(P_B,p->adjvex);//将弧入队,但不读取,只是将其放在队尾}p=p->nextarc;}}return OK;}int _tmain(int argc, _TCHAR* argv[]){ALGraph G;CreatGraph(G);cout<<"深度优先搜索图:"<<endl;DFSTraverse(G);cout<<endl;cout<<"广度优先搜索图:"<<endl;BFSTraverse(G);cout<<endl;system("pause");return 0;}。
数字图像处理实验一图像的基本操作和基本统计指标计算实验报告
实验一图像的基本操作和基本统计指标计算一、实验目的熟悉MATLAB图像处理工具箱,在掌握MATLAB基本操作的基础上,本课程主要依靠图像处理工具箱验证和设计图像处理算法。
对于初学者来说,勤学多练、熟悉MATLAB图像处理工具箱也是学号本课程的必经之路。
了解计算图像的统计指标的方法及其在图像处理中的意义。
了解图像的几何操作,如改变图像大小、剪切、旋转等。
二、实验主要仪器设备(1)台式计算机或笔记本电脑(2)MATLAB(安装了图像处理工具箱,即Image Processing Toolbox(IPT))(3)典型的灰度、彩色图像文件三、实验原理(1)将一幅图像视为一个二维矩阵。
(2)利用MATLAB图像处理工具箱读、写和显示图像文件。
①调用imread函数将图像文件读入图像数组(矩阵)。
例如“I=imread(‘tire.tif’);”。
其基本格式为:“A=imread(‘filename.fmt’)”,其中,A为二维矩阵,filename.为文件名,fmt为图像文件格式的扩展名。
②调用imwrite函数将图像矩阵写入图像文件。
例如“imwrite(A,’test_image.jpg’);”。
其基本格式为“imwrite(a,filename.fmt)”。
③调用imshow函数显示图像。
例如“imshow(‘tire.tif’);”。
其基本格式为:I为图像矩阵,N为显示的灰度级数,默认时为256。
(3)计算图像有关的统计参数。
四、实验内容(1)利用MATLAB图像处理工具箱和Photoshop读、写和显示图像文件。
(2)利用MATLAB计算图像有关的统计参数。
五、实验步骤(1)利用“读图像文件I/O”函数读入图像Italy.jpg。
(2)利用“读图像文件I/O”的iminfo函数了解图像文件的基本信息:主要包括Filename(文件名)、FileModDate(文件修改时间)、Filesize(文件尺寸)、Format(文件格式)、FormatVersion (格式版本)、Width(图像宽度)、Height(图像高度)、BitDepth(每个像素的位深度)、ColorType (彩色类型)、CodingMethod(编码方法)等。
数字图像处理基本操作及灰度调整实验报告
一.实验目的1.掌握读、写图像的基本方法;2.掌握MATLAB 语言中图像数据与信息的读取方法;3.理解图像灰度变换处理在图像增强的作用;4.掌握绘制灰度直方图的方法,理解灰度直方图的灰度变换及均衡化的方法。
二.实验基本原理1. 灰度变换灰度变换是图像增强的一种重要手段,它常用于改变图象的灰度范围及分布,是图象数字化及图象显示的重要工具。
1) 图像反转灰度级范围为[0, L-1]的图像反转可由下式获得r L s --=12) 对数运算:有时原图的动态范围太大,超出某些显示设备的允许动态范围,如直接使用原图,则一部分细节可能丢失。
解决的方法是对原图进行灰度压缩,如对数变换:s = c log(1 + r ),c 为常数,r ≥ 03) 幂次变换:0,0,≥≥=γγc cr s4) 对比拉伸:在实际应用中,为了突出图像中感兴趣的研究对象,常常要求局部扩展拉伸某一范围的灰度值,或对不同范围的灰度值进行不同的拉伸处理,即分段线性拉伸:其对应的数学表达式为:2. 直方图均衡化灰度直方图的横坐标是灰度级,纵坐标是该灰度级出现的频度,它是图像最基本的统计特征。
依据定义,在离散形式下, 用r k 代表离散灰度级,用p r (r k )代表p r (r ),并且有下式成立:nn r P k k r =)( 1,,2,1,010-=≤≤l k rk式中:n k 为图像中出现r k 级灰度的像素数,n 是图像像素总数,而n k /n 即为频数。
直方图均衡化处理是以累积分布函数变换法为基础的直方图修正法。
假定变换函数为ωωd p r T s r r)()(0⎰==(a) Lena 图像 (b) Lena 图像的直方图图1-1 Lena 图像及直方图当灰度级是离散值时,可用频数近似代替概率值,即1,,1,010)(-=≤≤=l k r nn r p k k k r式中:l 是灰度级的总数目,p r (r k )是取第k 级灰度值的概率,n k 是图像中出现第k 级灰度的次数,n 是图像中像素总数。
计算机辅助设计CAD-实验报告
实验报告课程名称:《计算机辅助设计》实验名称:《计算机辅助设计》课程实验院(系):管理学院专业班级:姓名:学号:指导教师:2014 年06 月02日实验项目一课程名称:《计算机辅助设计》实验类别:本科基础实验实验项目名称:AutoCAD综合绘图实验实验学时:10实验类型:操作、综合应用性实验开出要求:必做实验地点:西楼二楼微机实验室每组人数:1实验日期:2014年05月09、16、23日一、实验目的和要求目的:1.进行AutoCAD基础绘图命令使用练习,掌握AutoCAD基础绘图命令的使用方法。
2.进行AutoCAD图形绘制、编辑和处理练习,掌握AutoCAD图形绘制、编辑方法。
3.进行AutoCAD图形中文字标识、尺寸标注方法练习,掌握AutoCAD图形文字标识和尺寸标注方法,能够对AutoCAD图形输出进行设置。
4.应用所学图形绘制、编辑处理技术,设计并完成一幅综合图形的绘制。
要求:1、利用AutoCAD基本图元进行简单二维图形的绘图练习,完成一幅简单二维图形的绘制。
2.掌握AutoCAD的基本操作及常用命令并熟悉图形绘制、编辑;3.掌握AutoCAD图块的使用、图案填充操作;4.完成一幅基本二维工程图形的绘制、编辑和处理。
5.掌握AutoCAD图形中文字标识方法;6.掌握AutoCAD图形尺寸标注方法;7.掌握AutoCAD模型创建;8.掌握AutoCAD图形输出设置方法及步骤;9.完成一幅建筑或机械图形的文字标识和尺寸标注。
10.掌握AutoCAD图层管理器的使用;11.掌握AutoCAD线型管理器的使用;12.掌握AutoCAD颜色管理器的使用;13.掌握AutoCAD图形的绘图布局和打印输出控制;14.完成一幅综合图形的绘制、布局、出图设置等。
二、实验内容1.AutoCAD的安装,启动和退出,环境设置、熟悉工作界面。
2.熟悉基础绘图的命令(点、线、编辑);3.完成一幅简单二维图形的绘制。
实验二 遥感图像处理软件基本操作
实验二遥感图像处理软件基本操作一、实验目的:熟悉遥感图像处理软件ENVI的基本操作;二、实验设备:计算机、ENVI、TM数据、SPOT数据、Quickbird数据三、实验任务:1、文件的打开、显示、保存与头文件编辑;2、影像与矢量的叠加操作;3、光标查询功能及点位置收集;4、选择感兴趣区域。
四、实验原理:见讲义五、实验步骤:(1)文件的打开、显示、保存与头文件编辑●打开ENVI软件自带示例数据:File →Open Image File →can_tmr(.img格式)。
●文件的两种显示方式Gray Scale和RGB Color。
A、Gray Scale显示方式:Gray Scale→选择任意一波段显示(例:选中TM Band 4 (0.8300))→No Display →New Display→L oad Band。
B、RGB Color显示方式:RGB Color→选择相应的波段(例:选中TM Band 2-4,依次从4点到2)→No Display→New Display→L oad Band。
文件的保存(利用该方法还可以实现文件的格式转换、影像裁剪)。
A、将波段1、2合并,保存到一个新的文件中。
File→Save File As(选择保存文件的格式)→ENVI Standard→Import File→选中需要合并的文件→OK→Reorder Files...→将文件按照波段的升序排列→OK→OK(文件保存)。
B、将任意勾画的空间区域(即原影像的一个子区域)的影像保存到一个新的文件中。
在主影像窗口:File→Save Image File→Image Files...→Spatial Subset→Image→OK→选择文件格式→输出文件名→OK(文件保存)。
头文件编辑①将波段1、2合并后的文件的头文件用记事本打开;②打开原文件的头文件打开;③将原文件的头文件中的波段信息,复制粘贴至合并后文件的头文件信息中,并保存新的头文件。
文字基本操作实验报告(3篇)
第1篇一、实验目的1. 掌握文字处理软件的基本操作。
2. 学会创建、编辑、保存和打印文档。
3. 了解文字格式设置的方法。
4. 熟悉查找、替换和剪切、复制、粘贴等编辑功能。
二、实验环境1. 操作系统:Windows 102. 文字处理软件:Microsoft Word 20163. 实验设备:个人电脑三、实验内容1. 文档的创建与保存2. 文档的编辑3. 文字格式设置4. 查找、替换和编辑功能四、实验步骤1. 文档的创建与保存(1)打开Microsoft Word 2016软件。
(2)在菜单栏中选择“文件”→“新建”→“空白文档”。
(3)在空白文档中输入实验内容。
(4)在菜单栏中选择“文件”→“保存”或按快捷键Ctrl+S。
(5)在弹出的“另存为”对话框中,选择保存位置,输入文件名,选择文件格式(如.docx),点击“保存”。
2. 文档的编辑(1)选中需要编辑的文字。
(2)在菜单栏中选择“开始”选项卡,根据需要设置字体、字号、颜色等。
(3)使用“插入”选项卡中的功能,如插入图片、表格等。
(4)使用“页面布局”选项卡中的功能,如设置页边距、页眉页脚等。
3. 文字格式设置(1)选中需要设置格式的文字。
(2)在菜单栏中选择“开始”选项卡,设置字体、字号、颜色等。
(3)使用“段落”选项卡中的功能,如设置段落缩进、行间距等。
4. 查找、替换和编辑功能(1)在菜单栏中选择“开始”选项卡,点击“查找”或按快捷键Ctrl+F。
(2)在弹出的“查找和替换”对话框中,输入需要查找的内容,点击“查找下一个”或“全部替换”。
(3)在菜单栏中选择“开始”选项卡,点击“剪切”、“复制”或“粘贴”按钮,实现文本的剪切、复制和粘贴操作。
五、实验结果与分析1. 成功创建了文档,并保存到指定位置。
2. 在文档中输入了实验内容,并进行了编辑和格式设置。
3. 通过设置字体、字号、颜色等,使文档更加美观。
4. 使用查找、替换和编辑功能,提高了编辑效率。
数字图像处理基本操作及灰度调整实验报告
数字图像处理基本操作及灰度调整实验报告实验目的1.掌握数字图像处理的基本概念和原理。
2.学会使用Python编程语言进行图像处理。
3.理解并实现图像灰度调整的方法。
4.分析实验结果,讨论图像处理方法的优缺点。
2.1 数字图像处理概述数字图像处理(Digital Image Processing,DIP)是一门研究使用计算机对图像进行处理的技术。
它的目的是改善图像的质量,使之更适合人类或计算机对图像进行观察和分析。
数字图像处理涉及到图像采集、存储、传输、分析以及图像的恢复等方面。
2.2 图像的表示和描述数字图像由图像元素(像素)组成,每个像素有一个对应的灰度值。
灰度值表示像素的亮度,通常用8位二进制数表示,其范围为0~255。
像素的灰度值越高,亮度越高。
数字图像可以表示为一个矩阵,矩阵中的每个元素对应一个像素的灰度值。
彩色图像通常采用RGB颜色模型,每个像素包含三个分量,分别对应红色、绿色和蓝色通道的亮度。
2.3 图像灰度调整图像灰度调整是指调整图像像素的灰度值,以改善图像的质量。
常用的图像灰度调整方法有:1.线性灰度变换:通过线性映射关系改变图像灰度值,可以实现图像亮度的调整和对比度的拉伸。
2.直方图均衡化:通过调整图像的灰度直方图,使其均匀分布,可以提高图像的对比度。
•操作系统:Windows 10•编程语言:Python 3.8•图像处理库:OpenCV 4.5.2•集成开发环境:Visual Studio Code4.1 图像读取和显示首先,我们需要使用OpenCV库读取和显示图像。
以下是读取和显示图像的Python代码:4.2 图像灰度化为了便于后续的灰度调整操作,我们需要将彩色图像转换为灰度图像。
以下是图像灰度化的Python代码:4.3 灰度调整接下来,我们将对图像进行灰度调整。
首先,实现线性灰度变换。
以下是线性灰度变换的Python代码:4.4 图像直方图均衡化直方图均衡化是一种能够提高图像对比度的方法。
心电图的描绘实验报告
心电图的描绘实验报告实验目的本实验旨在通过心电图的描绘,了解心脏的工作原理,并观察心电图的特征,以及分析不同情况下心电图的变化。
通过实验,掌握心电图的基本操作技能。
实验器材和方法器材- 心电图仪- 心电图导联线- 心电图电极贴片- 计算机方法1. 打开心电图仪,将心电图导联线插入相应插槽。
2. 准备好心电图电极贴片,应保证贴片干燥和清洁,便于贴片的附着并确保导电。
3. 将心电图电极贴片贴在胸部和四肢相应部位,按照国际心电图导联法的规定贴片位置。
4. 连接导联线和电极贴片。
5. 调整心电图仪的功能设置,并选择合适的采样率和导联方式。
6. 打开电源,开始记录心电图数据。
7. 结束记录后,保存数据并进行心电图图形的分析。
实验步骤1. 按照国际心电图导联法,将心电图电极贴片贴在胸部和四肢相应位置。
2. 连接导联线和电极贴片。
3. 打开心电图仪电源,调整功能设置,选择合适的采样率和导联方式。
4. 开始记录心电图数据,记录时间约为5分钟。
5. 结束记录后,保存数据并进行分析。
实验结果在进行实验记录的过程中,我们观察到了以下心电图的特征和变化。
1. P波:表现为心电图上的正向波峰,表示心脏的窦房结除极,即心房收缩。
波峰应呈正弦曲线,波峰时间通常为0.08秒左右。
2. QRS波群:代表心脏的室壁除极,表示心室收缩。
QRS波群通常由一个或多个负向波峰和一个正向波峰构成,波峰时间为0.06-0.1秒。
3. T波:表现为心电图上的正向波峰,代表心室复极,即心室舒张。
T波形态应呈圆顶或钝顶形,波峰时间为0.16秒左右。
根据实验记录的心电图数据,我们发现了一些异常情况下的心电图变化。
1. 心律失常:心律失常时,心电图上的P波、QRS波群和T波的形态可能出现异常,波峰的时间间隔也会发生改变。
2. 心肌梗死:心肌梗死时,心电图上可能出现异常Q波和ST段抬高或压低的变化。
3. 心房扑动:心房扑动时,心电图上的P波将呈锯齿样,呈“锯齿波”形态。
BIM技术及应用-上机报告-实验项目:熟悉Revit及基本操作及结构模型的创建
BIM课程上机实验报告20 21 --20 22 学年 2 学期实验项目名称:Revit基本操作及结构模型的创建课程名称:专业班级:学生姓名:学生学号:河南理工大学2022年实验项目一:Revit基本操作及结构模型的创建一、实验内容:1、熟悉Revit,新建项目,选择样板文件,运用Revit创建标高和轴网的基本操作;2、载入族,属性设置,创建构件。
3、通过载入构件、设置属性,创建柱、梁、板,并能够对其进行属性和材质编辑;4、能够利用粘贴楼层的方法复制标准楼层的模型。
二、实验目的1、熟悉Revit的界面和基本建模思路;2、能够创建标高和轴网、并生成相应的平面;3、掌握载入族的方法,能够通过载入族创建构件;4、能够创建常规模型的柱、梁、板和基础等的结构模型。
三、实验学时:4学时四、实验过程及成果截图(介绍实验过程,选取平面、立面、三维和细部典型截图并说明)1、标高和轴网(建模过程及截图)(1)标高的绘制步骤第一步:选择选择“项目浏览器”的立面,以“南”里面为标准进行标高绘制。
第二步:此样板中会提前给出部分标高,我们有两种方法去绘制标高。
第一种是选择“基准”中的标高按钮一层层进行绘制。
(通过第一种方法绘制的标高会自动生成“结构平面”和“楼层平面”)第二种是通过阵列的方式直接按照统一间距生成标高,此方法需要注意,通过“阵列”生成的标高需要进行解组。
通过第二种方式绘制出来标高需要再手动生成一下“结构平面”以及“楼层平面”。
(2)轴网的绘制步骤第一步:选择“结构”中的轴网功能进行绘制。
绘制方式同标高,可以通过阵列和一个个画两种方式进行绘制。
第二步:对绘制好的轴网进行标注。
选择“注释”中的“对齐”指令。
对相邻轴线和总长进行标注。
最终绘制完成。
2、载入族和属性设置(建模过程及截图)第一步:载入族。
在“插入”选项中选择“载入族”指令。
然后可以根据不同需求载入不同的族来绘制bim图形。
第二步:更改族属性。
我们载入族之后需要在属性页面对载入的族进行属性设置。
proe实验报告
实验一参数化草图绘制一、实验目的:1、了解Pro/E软件的基本操作。
2、掌握二维截面的绘制、编辑、及标注。
3、熟悉草图绘制中各命令的用法和作用。
二、实验设备PC机,配置:PIII450/内存128M/显卡TNT32M/硬盘10G以上。
局域网、Pro/ENGINEER4.0软件、投影仪。
三、实验内容1、熟悉草绘界面。
2、学会草绘截面的绘制和编辑。
3、学会草绘截面的几何约束及尺寸标注与修改。
4、草绘操作吊钩实例,如图1-1。
图1-1四、实验步骤:1、双击桌面的proe启动图标,进入proe软件界面,如图1-2所示。
图1-22、单击“文件”下拉菜单选“新建”按钮,弹出新建对话框,如图1-3所示。
图1-3在类型下选择“草绘”,在“名称”栏中输入“diaogou”,单击确定,进入草绘界面,如图1-4所示。
图1-43、单击“草绘”工具栏中的按钮,绘制两条中心线,单击“草绘”工具栏中的按钮,绘制两矩形并约束其关于竖直中心线对称。
吊钩柄部倒直角,单击“草绘”工具栏中的按钮,如图1-5所示。
图1-54、单击“草绘”工具栏中的按钮,以两条中心线的交点为圆心,绘制24的圆。
单击草绘工具栏中的按钮,做半径为R29的圆,再单击草绘工具栏中的按钮,约束其圆心在水平中心线上,与上一步圆心相距5个单位。
单击草绘工具栏中的按钮,吊钩柄部矩形分别和两圆倒角R36、R24。
单击草绘工具栏中的按钮,动态修剪面曲线,如图1-6所示。
图1-65、在图形左下侧做直径为48的圆。
单击草绘工具栏中的按钮,约束圆心和水平中心线相距9个单位;单击草绘工具栏中的按钮,约束和中心圆相外切。
任意做直径为28的圆,单击草绘工具栏中的按钮,约束圆心在水平中心线上,如图1-7所示。
图1-76、单击草绘工具栏中的按钮,在直径为28圆的右上位置单击,作为第一个圆角对象;在直径为48圆的右上位置单击,作为第二个圆角对象,单击草绘工具栏中的按钮,动态修剪截面曲线,结果如图1-8所示。
图的基本操作实验报告
图的基本操作实验报告图的基本操作实验报告一、引言图是计算机科学中常用的数据结构之一,它由节点和边组成,用于表示事物之间的关系。
图的基本操作是对图进行增、删、改、查等操作,本实验旨在通过编程实现图的基本操作,加深对图的理解。
二、实验目的1. 理解图的基本概念和表示方法;2. 掌握图的基本操作,包括节点的插入、删除,边的添加、删除等;3. 运用图的基本操作解决实际问题。
三、实验方法本实验使用Python编程语言实现图的基本操作。
首先,定义图类,包括图的初始化、节点的插入、删除,边的添加、删除等方法。
然后,根据实际需求设计测试用例,验证图的基本操作的正确性。
四、实验过程1. 图的初始化在图类的初始化方法中,创建一个空的字典用于存储节点和边的信息。
节点用唯一的标识符表示,边用包含两个节点标识符的元组表示。
2. 节点的插入编写节点插入方法,接收节点标识符作为参数,将节点添加到图中。
在添加节点时,需要判断节点是否已存在于图中,如果存在则不进行插入操作。
3. 节点的删除编写节点删除方法,接收节点标识符作为参数,将节点从图中删除。
在删除节点时,需要同时删除与该节点相关的边。
4. 边的添加编写边添加方法,接收两个节点标识符作为参数,将边添加到图中。
在添加边时,需要判断节点是否存在于图中,如果不存在则先进行节点的插入操作。
5. 边的删除编写边删除方法,接收两个节点标识符作为参数,将边从图中删除。
在删除边时,需要判断边是否存在于图中。
6. 测试用例设计设计多个测试用例,包括插入节点、删除节点、添加边、删除边等操作,并验证操作的正确性。
七、实验结果经过多次测试,图的基本操作均能正常运行,符合预期结果。
通过图的基本操作,可以方便地对图进行增、删、改、查等操作,解决实际问题。
八、实验总结通过本次实验,我深入理解了图的基本概念和表示方法,并掌握了图的基本操作。
图作为一种重要的数据结构,在计算机科学中有着广泛的应用,例如社交网络分析、路线规划等领域。
UML实验报告
中南民族大学管理学院学生实验报告课程名称:UML面向对象分析与设计教程年级:专业:信息管理与信息系统学号:姓名:指导教师:实验地点:管理学院综合实验室2013 学年至2014 学年度第2 学期目录实验一UML建模基础实验二用例图实验三UML类图实验四对象图实验五包图实验六动态模型图实验(一)UML建模基础实验时间:实验目的1.熟悉UML建模工具Rational Rose的基本菜单及操作。
2.掌握UML的三大组成部分及各部分作用。
3.掌握UML的可见性规则和构造型的作用。
实验内容1.练习使用建模工具建立各种UML图形,并对图形进行相应编辑和修改。
2.认识各种UML关系及可见性符号,并用工具表示出来。
答:各种UML关系如下:分析与讨论1.总结UML在软件工程中的作用以及使用UML建模的必要性。
答:统一建模语言(UML)是用来对软件密集系统进行可视化建模的一种语言,也是为面向对象开发系统的产品进行说明、可视化、构造和编制文档的一种语言。
UML作为一种模型语言,它使开发人员专注于建立产品的模型和结构,而不是选用什么程序语言和算法实现。
当模型建立之后,模型可以被UML工具转化成指定的程序语言代码。
UML可以贯穿软件开发周期中的每一个阶段,最适于数据建模、业务建模、对象建模、组件建模。
UML展现了一系列最佳工程实践,这些最佳实践在对大规模、复杂系统进行建模方面,特别是在软件架构层次方面已经被验证有效。
UML是一种功能强大的,面向对象的可视化系统分析的建模语言,它的各个模型可以帮助开发人员更好地理解业务流程,建立更可靠,更完善的系统模型,从而使用户和开发人员对问题的描述达到相同的理解,以减少语义差异,保障分析的正确性。
指导教师批阅:实验(二)用例图实验时间:实验目的1.掌握用例的概念、UML用例图的组成、作用以及使用场合。
2.掌握用例与用例之间的各种关系。
3.用Rational Rose工具练习教材中的用例图。
图的基本操作实验报告
1 《数据结构》实验报告书实验内容:图的基本操作学院班级:计算机学院计算机科学与技术姓名:***学号:2011008******指导老师:高老师2前言计算机编程中加工处理的对象是数据,而数据具有一定的组织结构,所以学习计算机编程仅仅了解计算机语言是不够的,还必须掌握数据的组织、存储和运算的一般方法,这便是数据结构课程中所研究的内容,也是我们编写计算机程序的重要基础,由于它对计算机学科起到承前启后的作用,因此本课程被列为计算机等相关专业最重要的专业基础课;同时数据结构是计算机专业教学的一门核心课程。
计算机各领域都要用到各种数据结构,而且要从事计算机科学与技术工作,尤其是计算机领域的软件开发工作,必须具备较强的数据结构基础。
数据结构课程内容丰富、学习量大,实践性强;隐含在各部分内容中的方法和技术多;算法设计具有动态性和抽象性等特点,看懂听明白与掌握会应用之间有相当大的一段距离。
所以学生必须多实践才能进一步加深对课程的理解,理解和掌握算法设计所需的方法和技术,为整个专业学习打下良好的基础。
图的基本操作实验目的1、使学生可以巩固所学的有关图的基本知识。
2、熟练掌握图的存储结构。
3、熟练掌握图的两种遍历算法。
实验内容[问题描述]对给定图,实现图的深度优先遍历和广度优先遍历。
[基本要求]以邻接表为存储结构,实现连通无向图的深度优先和广度优先遍历。
以用3 户指定的结点为起点,分别输出每种遍历下的结点访问序列。
【测试数据】由学生依据软件工程的测试技术自己确定。
实验前的准备工作1、掌握图的相关概念。
2、掌握图的逻辑结构和存储结构。
3、掌握图的两种遍历算法的实现。
算法设计图的深度优先:类似树的先根遍历,初始状态所有顶点未曾被访问,则深度优先从图中某个顶点v出发,访问此顶点,然后依次从v的未被访问的邻接点出发深度优先遍历图,直到图中所有和v有路径相通的顶点都被访问到,若此图中尚有顶点未被访问,则另选图中一个未曾被访问的顶点作起始点重复上述过程直到所有的顶点都被访问。
草图大师实验报告
(五)实验结论:通过图片展现实验结果,结合文字说明总结实验结论(对解决问题的方法、过程现象、本质规律等进行总结)
1.通过课程学习,我们较为系统的学习了设计的方法,对空间的运用等等。
2.在模型制作过程,我们较为详细的了解到了模型制作的流程,以及作为展示空间的材料的运用和施工的流程等等一些问题,系统的了解了这方面的知识 。
(2)以学生上机操作为主,教师指导。
(四)问题讨论与分析:结合所学理论知识,对实验中的现象、拟解决的问题进行讨论,应用文字、表格、图形等方法对实验过程进行分析,并提出应注意的事项、重点和难点。
1.在学习展示空间的设计中,首先要学习别人是怎么设计的,设计的目的是什么,从而借鉴并应用到自己的设计当中,规划好设计后再开始制作。
3.完成了模型制作之后再处理一下细节,使模型达到最好的状态。
(六)教师评阅意见:
备注:如表格不够填写,可另附页。
力为企业和个人提供合同协议,策划案计划书,学习资料等等
打造全网一站式需求
在模型制作过程我们较为详细的了解到了模型制作的流程以及作为展示空间的材料的运用和施工的流程等等一些问题系统的了解了这方面的知识3
实验报告
课程名称:草图大师
实验项目:环境设计软件
专业:环境设计
年级:2015级
班级:
指导教师:
学生姓名
成绩:
(1)实验目的:需解决的问题及拟达到的目标。
(1) 了解SketchUp软件基本操作命令。
(2) 熟练运用 SketchUp绘制室内装饰图。
(3) 掌握SketchUp制图基本要求并能运用到实践中。
(2)主要仪器设备及材料:列出实验中主要使用的仪器设备及材料
sketchup实验报告之一
学生实验报告册(理工类)课程名称:SketchUp基础与应用专业班级:12级计算机科学与技术(特)学生学号: 06 学生姓名:章文静所属院部:计算机工程学院指导教师:傅骏钦2014 ——2015 学年第二学期金陵科技学院教务处制实验报告书写要求实验报告原则上要求学生手写,要求书写工整。
若因课程特点需打印的,标题采用四号黑体,正文采用小四号宋体,单倍行距。
纸张一律采用A4的纸张。
实验报告书写说明实验报告中实验目的和要求、实验仪器和设备、实验内容与过程、实验结果与分析这四项内容为必需项。
教师可根据学科特点和实验具体要求增加项目。
填写注意事项(1)细致观察,及时、准确、如实记录。
(2)准确说明,层次清晰。
(3)尽量采用专用术语来说明事物。
(4)外文、符号、公式要准确,应使用统一规定的名词和符号。
(5)应独立完成实验报告的书写,严禁抄袭、复印,一经发现,以零分论处。
实验报告批改说明实验报告的批改要及时、认真、仔细,一律用红色笔批改。
实验报告的批改成绩采用五级记分制或百分制,按《金陵科技学院课堂教学实施细则》中作业批阅成绩评定要求执行。
实验报告装订要求实验批改完毕后,任课老师将每门课程的每个实验项目的实验报告以自然班为单位、按学号升序排列,装订成册,并附上一份该门课程的实验大纲。
实验项目名称:基本绘图及编辑操作实验学时: 8同组学生姓名: / 实验地点: A105实验日期: 2015.4.8 实验成绩:批改教师:批改时间:实验一基本绘图及编辑操作一. 实验目的:通过对SketchUp8.0第一章,第二章、第三章的理论学习和实例介绍,使学生理解SketchUp8.0中各种典型的三维物体的建模方法和技巧,以及能运用各种工具的基础知识和基本操作。
二.实验要求:根据所学理论知识和实例介绍,了解SketchUp8.0中三维物体的建模方法和技巧,掌握各种工具的基础知识和基本操作,制作出多种典型的常见三维物体,并写出实验报告。
数据结构实验报告总结
数据结构实验报告总结Abstract本实验报告总结了在数据结构实验中进行的一系列实验,包括线性表、栈、队列、二叉树以及图等数据结构的实现与运用。
通过实验,我们对数据结构的基本概念、操作和应用有了更深入的理解。
本报告将对每个实验进行总结,并分析实验中的问题和解决方案。
1. 线性表实验在线性表实验中,我们熟悉了线性表的基本概念和操作。
实验中,我们使用数组和链表两种不同的存储结构实现了线性表,并比较了它们的优缺点。
我们还学习了线性表的顺序查找和二分查找算法,并分析了它们的时间复杂度。
通过这些实验,我们深入理解了线性表的特性和算法。
2. 栈实验栈是一种特殊的线性表,具有“先进后出”的特性。
在栈实验中,我们实现了栈的基本操作,包括进栈、出栈和判断栈是否为空等。
我们还利用栈实现了括号匹配和中缀表达式转后缀表达式的算法。
通过这些实验,我们学会了如何运用栈进行简单的计算和语法分析。
3. 队列实验队列是一种“先进先出”的线性表,对于某些应用场景非常重要。
在队列实验中,我们实现了队列的基本操作,包括入队、出队和判断队列是否为空等。
我们还学习了循环队列和链式队列的实现,并比较它们的优缺点。
通过这些实验,我们掌握了队列的应用和效率分析。
4. 二叉树实验二叉树是一种非常常见的数据结构,具有良好的应用潜力。
在二叉树实验中,我们实现了二叉树的基本操作,包括插入节点、删除节点和查找节点等。
我们还学习了二叉树的遍历算法,包括前序、中序和后序遍历,并分析了它们的应用场景和时间复杂度。
通过这些实验,我们深入了解了二叉树的特性和算法。
5. 图实验图是一种非常复杂的数据结构,用于解决实际问题时非常有用。
在图实验中,我们实现了图的基本操作,包括添加节点、添加边和遍历图等。
我们还学习了图的深度优先搜索和广度优先搜索算法,并比较它们的优缺点。
通过这些实验,我们掌握了图的应用和算法分析。
总结通过这些数据结构实验,我们不仅掌握了各种数据结构的基本概念和操作,还学会了运用它们解决实际问题的方法。
心电图实训报告
心电图实训报告
I. 简介
本报告是关于心电图实训的总结。
在此次实训中,我们学习了心电图检查的基本知识和技能。
II. 实训目的
本次实训的目的是为了使学生了解心电图检查的基本原理和方法,熟练掌握心电图的操作方法并能够准确判断结果。
III. 实训内容
1. 心电图仪器的使用方法和操作技能。
2. 对心电图信号的理解及识别,掌握各种异常心电图的判读。
3. 在实际的心电图检查中,准确运用不同的心电图技术。
IV. 实训过程
1. 实验器材:心电图仪、导联线、纸张等。
2. 实验步骤:
(1) 准备工作:为患者准备好器材,保持检测区域干燥。
(2) 与患者沟通,确定检查需要记录的心电数据。
(3) 安装心电图仪并将导联线与患者连接。
(4) 转化心电图仪,开始记录心电数据。
(5) 检查结束后,关闭心电图仪并将结果打印出来。
3. 数据处理:结合检查结果,进行对各种异常心电图的判断和鉴别。
V. 结论
通过本次实训,我们对心电图检查有了更深入的了解。
我们掌握了心电图检查的基本知识和技能,并可以运用所学技术进行实际检查。
我们认为,这次实训对我们以后的医疗工作具有重要的指导意义。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验五图的基本操作一、实验目的1、使学生可以巩固所学的有关图的基本知识。
2、熟练掌握图的存储结构。
3、熟练掌握图的两种遍历算法。
二、实验内容[问题描述]对给定图,实现图的深度优先遍历和广度优先遍历。
[基本要求]以邻接表为存储结构,实现连通无向图的深度优先和广度优先遍历。
以用户指定的结点为起点,分别输出每种遍历下的结点访问序列。
【测试数据】由学生依据软件工程的测试技术自己确定。
三、实验前的准备工作1、掌握图的相关概念。
2、掌握图的逻辑结构和存储结构。
3、掌握图的两种遍历算法的实现。
四、实验报告要求1、实验报告要按照实验报告格式规范书写。
2、实验上要写出多批测试数据的运行结果。
3、结合运行结果,对程序进行分析。
五、算法设计1、程序所需头文件已经预处理宏定义和结构体定义如下#include<iostream.h>#define MaxVerNum 100struct edgenode{int endver;int inform;edgenode* edgenext;};struct vexnode{char vertex;edgenode* edgelink;};struct Graph{vexnode adjlists[MaxVerNum];int vexnum;int arcnum;};2、创建无向图void CreatAdjList(Graph* G){int i,j,k;edgenode* p1;edgenode* p2;cout<<"请输入顶点数和边数:"<<endl;cin>>G->vexnum>>G->arcnum;cout<<"开始输入顶点表:"<<endl;for (i=0;i<G->vexnum;i++){cin>>G->adjlists[i].vertex;G->adjlists[i].edgelink=NULL;}cout<<"开始输入边表信息:"<<endl;for (k=0;k<G->arcnum;k++){cout<<"请输入边<Vi,Vj>对应的顶点:";cin>>i>>j;p1=new edgenode;p1->endver=j;p1->edgenext=G->adjlists[i].edgelink;G->adjlists[i].edgelink=p1;p2=new edgenode;p2->endver=i;p2->edgenext=G->adjlists[j].edgelink;G->adjlists[j].edgelink=p2;//因为是无向图,所以有两次建立边表的过程}}3、深度优先遍历void DFS(Graph *G,int i,int visit[]){cout<<G->adjlists[i].vertex<<" ";visit[i]=1;edgenode *p=new edgenode;p=G->adjlists[i].edgelink;if(G->adjlists[i].edgelink&&!visit[p->endver]){DFS(G,p->endver,visit);}}void DFStraversal(Graph *G,char c)//深度优先遍历{cout<<"该图的深度优先遍历结果为:"<<endl;int visit[MaxVerNum];for(int i=0;i<G->vexnum;i++){visit[i]=0;//全部初始化为0,即未访问状态}int m;for (i=0;i<G->vexnum;i++){if (G->adjlists[i].vertex==c)//根据字符查找序号{m=i;DFS(G,i,visit);break;}}//继续访问未被访问的结点for(i=0;i<G->vexnum;i++){if(visit[i]==0)DFS(G,i,visit);}cout<<endl;}4、广度优先遍历void BFS(Graph* G,int v,int visit[]){QueueList *Q=new QueueList;Q->front=Q->rear=NULL;EnQueue(Q,v);while(Q->rear!=NULL){int e=0;DeQueue(Q,&e);cout<<G->adjlists[e].vertex<<" ";visit[e]=1;edgenode* p=new edgenode;p=G->adjlists[e].edgelink;if(p){int m=p->endver;if(m==0){EnQueue(Q,m);while(visit[m]==0){p=p->edgenext;if(p==NULL)break;m=p->endver;EnQueue(Q,m);}}}}}void BFStraversal(Graph *G,char c){cout<<"该图的广度优先遍历结果为:"<<endl; int visited[MaxVerNum];for (int i=0;i<G->vexnum;i++){visited[i]=0;}int m;for (i=0;i<G->vexnum;i++){if (G->adjlists[i].vertex==c){m=i;BFS(G,i,visited);break;}}//继续访问未被访问的结点for(i=0;i<G->vexnum;i++){if(visited[i]==0)BFS(G,i,visited);}cout<<endl;}六、调试与测试测试数据,如图:七、总结通过做这次实验,发现自己在数据结构这门课中还有很多不足有很多知识还没掌握,所以在写程序的时候出现了很多的错误,及还有很多的知识不以灵活运用。
C++没有掌握好,所以这次做本次实验还是吃力,刚开始完全没有思路,后来经过查找资料,在自己的努力下和同学的帮助下,终于完了本次实验,此次实验发现的自己的不足,在以后的学习中,我会更加的努力。
八、源代码#include<iostream.h>#define MaxVerNum 100struct edgenode{int endver;int inform;edgenode* edgenext;};struct vexnode{char vertex;edgenode* edgelink;};struct Graph{vexnode adjlists[MaxVerNum];int vexnum;int arcnum;};//队列的定义及相关函数的实现struct QueueNode{int nData;QueueNode* next;};struct QueueList{QueueNode* front;QueueNode* rear;};void EnQueue(QueueList* Q,int e) {QueueNode *q=new QueueNode; q->nData=e;q->next=NULL;if(Q==NULL)return;if(Q->rear==NULL)Q->front=Q->rear=q;else{Q->rear->next=q;Q->rear=Q->rear->next;}}void DeQueue(QueueList* Q,int* e) {if (Q==NULL)return;if (Q->front==Q->rear){*e=Q->front->nData;Q->front=Q->rear=NULL;}else{*e=Q->front->nData;Q->front=Q->front->next;}}//创建图void CreatAdjList(Graph* G){int i,j,k;edgenode* p1;edgenode* p2;cout<<"请输入顶点数和边数:"<<endl;cin>>G->vexnum>>G->arcnum;cout<<"开始输入顶点表:"<<endl;for (i=0;i<G->vexnum;i++){cin>>G->adjlists[i].vertex;G->adjlists[i].edgelink=NULL;}cout<<"开始输入边表信息:"<<endl;for (k=0;k<G->arcnum;k++){cout<<"请输入边<Vi,Vj>对应的顶点:";cin>>i>>j;p1=new edgenode;p1->endver=j;p1->edgenext=G->adjlists[i].edgelink;G->adjlists[i].edgelink=p1;p2=new edgenode;p2->endver=i;p2->edgenext=G->adjlists[j].edgelink;G->adjlists[j].edgelink=p2;//因为是无向图,所以有两次建立边表的过程}}//深度优先遍历void DFS(Graph *G,int i,int visit[]){cout<<G->adjlists[i].vertex<<" ";visit[i]=1;edgenode *p=new edgenode;p=G->adjlists[i].edgelink;if(G->adjlists[i].edgelink&&!visit[p->endver]){DFS(G,p->endver,visit);}}void DFStraversal(Graph *G,char c)//深度优先遍历{cout<<"该图的深度优先遍历结果为:"<<endl;int visit[MaxVerNum];for(int i=0;i<G->vexnum;i++){visit[i]=0;//全部初始化为0,即未访问状态}int m;for (i=0;i<G->vexnum;i++){if (G->adjlists[i].vertex==c)//根据字符查找序号{m=i;DFS(G,i,visit);break;}}//继续访问未被访问的结点for(i=0;i<G->vexnum;i++){if(visit[i]==0)DFS(G,i,visit);}cout<<endl;}//广度优先遍历void BFS(Graph* G,int v,int visit[]){QueueList *Q=new QueueList;Q->front=Q->rear=NULL;EnQueue(Q,v);while(Q->rear!=NULL){int e=0;DeQueue(Q,&e);cout<<G->adjlists[e].vertex<<" ";visit[e]=1;edgenode* p=new edgenode;p=G->adjlists[e].edgelink;if(p){int m=p->endver;if(m==0){EnQueue(Q,m);while(visit[m]==0){p=p->edgenext;if(p==NULL)break;m=p->endver;EnQueue(Q,m);}}}}}void BFStraversal(Graph *G,char c){cout<<"该图的广度优先遍历结果为:"<<endl; int visited[MaxVerNum];for (int i=0;i<G->vexnum;i++){visited[i]=0;}int m;for (i=0;i<G->vexnum;i++){if (G->adjlists[i].vertex==c){m=i;BFS(G,i,visited);break;}}//继续访问未被访问的结点for(i=0;i<G->vexnum;i++){if(visited[i]==0)BFS(G,i,visited);}cout<<endl;}void main(){Graph * G=new Graph; CreatAdjList(G);char ch;cout<<"请输入开始遍历的顶点:"; cin>>ch;DFStraversal(G,ch); BFStraversal(G,ch);}。