图实验报告

图实验报告
图实验报告

闽江学院电子系

实验报告

学生姓名:班级:学号:

课程:算法与数据结构

一、实验题目::图及其应用

一、实验地点:实验楼A210

二、实验目的:

. 熟练掌握图的两种存储结构(邻接矩阵和邻接表)的表示方法

. 掌握图的基本运算及应用

. 加深对图的理解,逐步培养解决实际问题的编程能力

三、实验内容:

. 采用邻接表或邻接矩阵方式存储图,实现图的深度遍历和广度遍历;

. 用广度优先搜索方法找出从一顶点到另一顶点边数最少的路径;

. 图的存储结构的转换。

四、实验环境(使用的软硬件):

Visual C++集成开发环境

五、实验步骤及操作

1.启动VC++;

2. 新建工程/Win32 Console Application,选择输入位置:输入工程的名称:tu;

按“确定”按钮,选择“An Empty Project”,再按“完成”按钮,

3.新建文件/C++ Source File,选中“添加到工程的复选按钮”,输入文件名“1. cpp”,按“确定”按钮,在显示的代码编辑区内输入如下的参考程序:

#include

#include

#define Infinity 1000

#define MAX 20

typedef struct{

int vexnum; //顶点数目

int arcnum; //弧数目

char vexs[MAX]; //顶点向量

int arcs[MAX][MAX]; //邻接矩阵

char kind; //图的种类:有向图D,无向图U

}MGraph;

//图的建立

MGraph Creat_MGraph(){

MGraph G;

int i,j,k,w;

char v1,v2;

printf("请输入图的种类(有向图(D),无向图(U)!\n");

scanf("%c",&G.kind);

printf("请输入顶点数目和弧数目!\n");

scanf("%d%d",&G.vexnum,&G.arcnum);

getchar();

printf("请输入各个顶点(abc)!\n");

for(i=0;i

scanf("%c",&G.vexs[i]);

getchar();

for(i=0;i

for(j=0;j

G.arcs[i][j]=Infinity;

}

for(i=0;i

printf("请输入第 (%d) 条弧的起始点和它的权重(ccd)!\n",i+1);

scanf("%c%c%d",&v1,&v2,&w);

getchar();

j=k=0;

while(G.vexs[j]!=v1) j++; //起点

while(G.vexs[k]!=v2) k++; //终点

G.arcs[j][k]=w;

if(G.kind=='U')

G.arcs[k][j]=w;

}

return G;

}

int visited[MAX]; //标志数组,显示是否遍历//递归深度遍历调用函数

void DFS(MGraph G,int i){

int j;

visited[i]=1;

printf(" %c ",G.vexs[i]);

for(j=0;j

if(!visited[j]&&G.arcs[i][j]

DFS(G,j);

}

//深度遍历函数

void M_DFSTraverse(MGraph G){

int i;

printf("深度遍历图结果如下: \n");

for(i=0;i

visited[i]=0;

for(i=0;i

if(!visited[i])

DFS(G,i);

printf("\n");

}

//广度遍历函数

void M_BFSTraverse(MGraph G){

int i,j,k,Q[MAX],w;

j=k=0;

printf("广度遍历图结果如下: \n");

for(i=0;i

visited[i]=0;

for(i=0;i

if(!visited[i]){

visited[i]=1;

printf(" %c ",G.vexs[i]);

Q[k++]=i;

while(j!=k){

j++;

for(w=0;w

if(!visited[w] && G.arcs[j][w]

visited[w]=1;

printf(" %c ",G.vexs[w]);

Q[k++]=w;

}

}

}

printf("\n");

}

//最小生成树函数,对无向图适用

void MiniSpanTree_PRIM(MGraph G,char u){

char adjvex[MAX];

int lowcost[MAX];

int i,j,k=0,min;

printf("图的最小生成树为: \n");

while(G.vexs[k]!=u) k++;

for(i=0;i

if(i!=k){

adjvex[i]=u;

lowcost[i]=G.arcs[k][i];

}

lowcost[k]=0;

for(i=0;i

min=Infinity;

for(j=0;j

if(lowcost[j] && lowcost[j]

min=lowcost[j];

k=j;

}

printf("%c--(%d)--%c\n",adjvex[k],lowcost[k],G.vexs[k]);

lowcost[k]=0;

for(j=0;j

if(G.arcs[k][j]

adjvex[j]=G.vexs[k];

lowcost[j]=G.arcs[k][j];

}

}

}

//求最短路径的函数,对有向图适用

void ShortestPath_DIJ(MGraph G,char u){

int P[MAX][MAX], //二维数组,标志最短路径上的点

D[MAX], //记录最短路径的长度

final[MAX], //标志是否求的它的最短路径

i,j,v,w,v0,min;

v0=0;

while(G.vexs[v0]!=u) v0++;

for(v=0;v

D[v]=G.arcs[v0][v];

final[v]=0;

for(w=0;w

P[v][w]=0;

if(D[v]

P[v][v0]=1; P[v][v]=1;

}

}

D[v0]=0;final[v0]=1;

for(i=1;i

min=Infinity;

for(w=0;w

if(!final[w])

if(D[w]

v=w; min=D[w];

}

final[v]=1;

for(w=0;w

if(!final[w] && (min+G.arcs[v][w]

D[w]=min+G.arcs[v][w];

for(j=0;j

P[w][j]=P[v][j];

P[w][w]=1;

}

}

printf("从已知点到其他各点的最短路径为: \n");

for(v=0;v

if(final[v]){

printf("%c--%c 的最短路径长度为 %d ,路径为:",u,G.vexs[v],D[v]);

for(w=0;w

if(P[v][w])

printf(" %c ",G.vexs[w]);

printf("\n");

}

}

void main(){

MGraph G;

G=Creat_MGraph();

M_DFSTraverse(G);

M_BFSTraverse(G);

if(G.kind=='U')

MiniSpanTree_PRIM(G,'a'); //无向图就求它的最小生成树

else

ShortestPath_DIJ(G,'a'); //有向图就求它的最短路径

}

4. 按F7 键,或工具图标进行工程的建立,如有错误,根据错误显示区中的提示,改正错误,重新建立应用程序;

5.按Ctrl+F5 键,或工具图标进行工程的执行。

6.新建工程/Win32 Console Application,选择输入位置:输入工程的名称:图的存储结构转换;按“确定”按钮,选择“An Empty Project”,再按“完成”按钮,

7.新建文件/C++ Source File,选中“添加到工程的复选按钮”,输入文件名“1. cpp”,按“确定”按钮,在显示的代码编辑区内输入如下的参考程序:

#include

#include

#define MAX 5

#define INF 100000

int visit[MAX]={0};

typedef struct mgraph

{

int edges[MAX][MAX];

int n,e;

}MGraph;

typedef struct node

{

int adjvex;

struct node *nextarc;

}ArcNode;

typedef struct Vnode

{

ArcNode *firstarc;

}VNode;

typedef struct algraph

{

VNode adjlist[MAX];

int n,e;

}ALGraph;

void MtoAL(MGraph mg,ALGraph* &alg)

{

int i,j,n=mg.n;

ArcNode *p;

alg=(ALGraph *)malloc(sizeof(ALGraph));

for(i=0;i

alg->adjlist[i].firstarc=NULL;

for(i=0;i

{

for(j=n-1;j>=0;j--)

{

if(mg.edges[i][j]!=0)

{

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

p->adjvex=j;

p->nextarc=alg->adjlist[i].firstarc; alg->adjlist[i].firstarc=p;

}

}

alg->n=mg.n;

alg->e=mg.e;

}

}

void ALtoM(ALGraph *alg,MGraph &mg)

{

int i=0,n=alg->n;

ArcNode *p;

for(i=0;i

{

p=alg->adjlist[i].firstarc;

while(p)

{

mg.edges[i][p->adjvex]=1;

p=p->nextarc;

}

}

mg.n=alg->n;

mg.e=alg->e;

}

void PrintMGraph(MGraph mg)

{

{

for(int j=0;j

printf("%-3d",mg.edges[i][j]);

printf("\n");

}

printf("the num of edge is:%-3d\n",mg.e);

printf("the num of vertex is:%-3d\n",mg.n);

}

void PrintALGraph(ALGraph* alg)

{

for(int i=0;i

{

if(alg->adjlist[i].firstarc)

{

printf("vertex[%d]:",i);

ArcNode* p=alg->adjlist[i].firstarc;

while(p)

{

printf("%-3d",p->adjvex);

p=p->nextarc;

}

}

printf("\n");

}

}

void main()

{

MGraph mg;

ALGraph *alg;

mg.n=5;mg.e=6;

int path[MAX];

int a[MAX][MAX]={ {0,1,0,1,0},{1,0,1,0,0},{0,1,0,1,1},{1,0,1,0,1},{0,0,1,1,0}}; int i,j;

for(i=0;i

mg.edges[i][j]=a[i][j];

printf("邻接矩阵表示图:\n");

PrintMGraph(mg);

MtoAL(mg,alg);

printf("转化为邻接表表示图:\n");

PrintALGraph(alg);

ALtoM(alg,mg);

printf("转化为邻接矩阵表示图:\n");

PrintMGraph(mg);

}

8. 按F7 键,或工具图标进行工程的建立,如有错误,根据错误显示区中的提示,改正错误,重新建立应用程序;

9.按Ctrl+F5 键,或工具图标进行工程的执行。

六、实验结果:

(1)无向图

(2)有向图

(3)图的存储结构的转换

五、实验总结及心得体会:

从一个顶点出发只能访问到它所在连通分量的各顶点。如果有回路存在,一个顶点被访问之后又可能沿回路回到该顶点,为了避免对同一个顶点多次访问,在遍历过程中必须记下已经访问过的顶点,通常利用一维辅助数组记录顶点被访问的情况。

六、对本实验过程及方法、手段的改进建议:

报告评分:

指导教师签字:批阅日期:

计算机图形学实验报告

《计算机图形学》实验报告姓名:郭子玉 学号:2012211632 班级:计算机12-2班 实验地点:逸夫楼507 实验时间:15.04.10 15.04.17

实验一 1 实验目的和要求 理解直线生成的原理;掌握典型直线生成算法;掌握步处理、分析实验数据的能力; 编程实现DDA 算法、Bresenham 中点算法;对于给定起点和终点的直线,分别调用DDA 算法和Bresenham 中点算法进行批量绘制,并记录两种算法的绘制时间;利用excel 等数据分析软件,将试验结果编制成表格,并绘制折线图比较两种算法的性能。 2 实验环境和工具 开发环境:Visual C++ 6.0 实验平台:Experiment_Frame_One (自制平台) 3 实验结果 3.1 程序流程图 (1)DDA 算法 是 否 否 是 是 开始 计算k ,b K<=1 x=x+1;y=y+k; 绘点 x<=X1 y<=Y1 绘点 y=y+1;x=x+1/k; 结束

(2)Mid_Bresenham 算法 是 否 否 是 是 是 否 是 否 开始 计算dx,dy dx>dy D=dx-2*dy 绘点 D<0 y=y+1;D = D + 2*dx - 2*dy; x=x+1; D = D - 2*dy; x=x+1; x

3.2程序代码 //-------------------------算法实现------------------------------// //绘制像素的函数DrawPixel(x, y); (1)DDA算法 void CExperiment_Frame_OneView::DDA(int X0, int Y0, int X1, int Y1) { //----------请实现DDA算法------------// float k, b; float d; k = float(Y1 - Y0)/float(X1 - X0); b = float(X1*Y0 - X0*Y1)/float(X1 - X0); if(fabs(k)<= 1) { if(X0 > X1) { int temp = X0; X0 = X1; X1 = temp; }

图像处理实验报告

重庆交通大学 学生实验报告 实验课程名称数字图像处理 开课实验室数学实验室 学院理学院年级信息与计算科学专业 2 班学生姓名李伟凯学号631122020203 开课时间2014 至2015 学年第 1 学期

实验(一)图像处理基础 ?实验目的 学习Matlab软件的图像处理工具箱,掌握常用的一些图像处理命令;通过编程实现几种简单的图像增强算法,加强对图像增强的理解。 ?实验内容 题目A.打开Matlab软件帮助,学习了解Matlab中图像处理工具箱的基本功能;题目B.掌握以下常见图像处理函数的使用: imread( ) imageinfo( ) imwrite( ) imopen( ) imclose( ) imshow( ) impixel( ) imresize( ) imadjust( ) imnoise( ) imrotate( ) im2bw( ) rgb2gray( ) 题目C.编程实现对图像的线性灰度拉伸y = ax + b,函数形式为:imstrech(I, a, b); 题目D.编程实现对图像进行直方图均衡化处理,并将实验结果与Matab中imhist 命令结果比较。 三、实验结果 1).基本图像处理函数的使用: I=imread('rice.png'); se = strel('disk',1); I_opened = imopen(I,se); %对边缘进行平滑 subplot(1,2,1), imshow(I), title('原始图像') subplot(1,2,2), imshow(I_opened), title('平滑图像') 原始图像平滑图像

实验报告

高级过程控制实验 ——PLC实验 姓名:王珠 学号:2011200811 班级:信研1101班 指导教师:赵众(教授)

实验一交通信号灯控制的编程实验 实验目的:进一步熟悉可编程序控制器的指令系统,熟悉时序控制程序的设计和调试方法。 实验装置:S7-300可编程序控制器 实验内容: 十字路口交通灯控制实验 (1)控制开关 信号灯受一个启动开关控制,当开关接通时,信号灯系统开始工作;当开关断开时,所有信号灯都熄灭。 (2)控制要求 南北红灯亮维持40s,同时东西绿灯也亮,维持50s。东西绿灯熄灭的同时东西红灯亮,南北绿灯亮,且东西红灯维持40s,南北绿灯维持50s。依次循环。 根据控制要求,画出交通灯的状态图,设计出红、绿灯的梯形图,将程序写入可编程序控制器,检查无误后运行程序。 新建项目“交通灯”,选择LAD语言,在OB1中输入下列程序:

图1 OB1中的交通灯程序 程序结果: 当电源开关一打开,T1、T2开始计时,T3、T4不计时。当T1计时时间不到时,Q1.2输出为1,即南北绿灯亮,此时Q1.4东西红灯也亮;当T1计时完40s时,Q1.2南北绿灯灭,但T1仍在计时,东西红灯继续亮。当T2计时完50s 后,T3、T4开始计时,当T3开始计时时,Q1.6东西绿灯亮,同时,Q1.0南北红灯亮,当T3计时完40s后,Q1.6东西绿灯灭,但是Q1.0东西红灯依旧亮,直到T4计时完50s。接下来重复电源开关刚开时的动作,这样就完成了交通灯实验的要求。 用PLCSIM模拟运行该程序,点击I1.0使其为1状态。Q1.0代表南北红灯,Q1.2代表南北绿灯,Q1.4代表东西红灯,Q1.6代表东西绿灯。南北绿灯维持40s,灭,东西红灯再维持10s,灭;换为东西绿灯维持40s,灭;南北红灯再维持10s, 灭。依照此规律循环不断。下面是仿真图像:

FAT文件系统操作系统课程设计实验报告

操作系统课程设计之三 设计任务:模拟OS文件系统 在任一OS(Window或者Dos;也可以是在Linux下,但要求能将结果演示给老 师看)下,建立一个大文件,把它假象成一张盘,在其中实现一个简单的模拟OS 字 ,第 ⑤、每个目录实际能放下文件或子目录30项。 ⑸、文件系统空间分配: ①、第0个盘块(1k)存放磁盘信息(可以设定为格式说明“FAT32”、盘块大小,盘块数等 内容) ②、第1个盘块起,至125盘块,共125个盘块(125k)存放FAT内容 ③、第126、127(2个)盘块,存放位示图

④、从第128盘块至10000盘块,皆为数据(区)盘块,其逻辑编号从0开始,至 9872号数据盘块,即第0数据盘块为128号盘块,第1数据盘块为129号盘块,… ⑤、第0数据盘块(即128号盘块),存放根目录(同样只用一个盘块作根目录), 由于第0、1目录项为“.”(本目录), “..”(父目录),因此根目录下同样只能存放30个文件或目录,并且从第2个目录项开始。 ⑥、文件或子目录数据,放在第1数据盘块及以后的数据盘块中,由用户按需要使 用。 内容 ⑺、删除文件 #DelFile 文件名.扩展名,在文件所在的目录项中,将第一个字节变为0xE5,并同时修改FAT内容和位示图内容;如果文件不存在,给出出错信息 ⑻、文件拷贝 #CopyFile 老文件,新文件,为新文件创建一个目录项,并将老文件内容复制到新文件中,并同时修改FAT内容和位示图内容 ⑼、显示位示图内容

#ShowBitMP,将位示图内容(已有信息部分),显示在屏幕上(按十六进制)⑽、显示FAT内容 #ShowFAT,将FAT内容(已有信息部分),显示在屏幕上(按十六进制) 4、程序的总体流程为: ⑴、输出提示符#,等待接受命令,分析键入的命令; ⑵、对合法的命令,执行相应的处理程序,否则输出错误信息,继续等待新命令 关于对FAT表和MAP表的用法 1.当要用到数据块是,查询MAP表(因为只做比较查询即可),查询到的未用位置 置1,然后在FAT表上进行相应记录,在本程序做出的规定是,当文件夹FAT 表做-1,若是文件则按照FAT做对应的顺序记录,最后一块同样是-1结束,2.回收的时候,是按照FAT表的首项,做顺序置0,然后MAP也在相应位置置0

UML统一建模语言-实验报告2-活动图及状态图

《UML技术》课程实验报告 专业: 班级: 学号: 姓名: 日期: 2013 年 10 月 11 日

一、实验题目 活动图及状态图 二、实验目的 1.熟悉活动图的基本功能和使用方法。 2.掌握如何使用建模工具绘制活动图方法。 三、实验内容及原理 通过前面内容的学习,完成了对TJKD图书馆的图书馆管理系统的需求的初步分析,得出系统的用例图和相应的活动态。通过这两类图我们可以初步了解系统的业务处理过程,但对业务处理过程的处理状态间转换了解仍不够,这不利于设计人员对系统业务的进一步理解,而状态图能从对象的动态行为的角度去描述系统的业务活动。因此,指派你运用本节所学的状态图,完成如下任务: 1. 完成图书业务模块中还书用例的状态图。 1.业务分析:由前面章节对图书馆管理系统中的还书主要业务的描述和分析可知,还书业务的动态行为是由:空闲(idle)、图书查找(finding)、还书(reversion)、失败(Failure)、归还成功(Success)5种状态及激活相互转换的事件。 2.绘制状态图:请您根据分析运用UML绘制还书用例的状态图。 分析: 还书的状态图,还书的主要业务都是由管理员来完成,首先管理员必须先登录系统,并通过验证后,便可以进行下一步的操作,查找该书的相关信息,如存在,则进行还书操作,如不存在该信息,则给出提示信息; 四、实验步骤 第一个 (1)在用例图中,找到删除的用例,在删除用例上单击右键,在弹出的快捷菜单中选“New”,Rose 工具也会弹出一个菜单,选”Activity Diagram”,选中后单击,便可以新建好一个活动图。 (2)新建好活动图后,双击删除的活动图,然后把在左边的工具栏内点击“Swinlane“,在右边的图添加一个泳道,并命名为administrator.按照此步骤,再添加另一个泳道,并命名为SystemTool (3)接着在左边的工具上选取开始点,并在administrator的泳道上添加;添加完开始结点后,再来为此活动图添加活动,在左边的工具栏上选中Activity这个图标,在administrator这边的泳道上添加一个活动,命名为登录(login),再在开始结点和活动登录(login)之间添加活动关系 (4)完成步骤(2)后,登录输入需要对输入的信息进行验证,则在图中添加一个验证框结束(5)验证后,下一步的操作是查询需要删除的记录,添加一个活动,命名为delete (6)最后,在删除后,系统会返回操作结果给操作者;删除成功或删除失败系统都会有信息返回给操作者。 (7)根据分析设计情况,进一步添加或细化活动图 第二个 (1)在用例图中的还书(revesion)用例,单击右键,新建一个状态图,命名为revesion状态图,(2)双击“receivesion”状态图,展开后,在左边的工具栏上选取一个实心圆点,此结点为开始结点;当还书的时候,操作者先要询问系统的状态,如果系统忙,操作者则必需等待,因此,得到系统的两种状态

工图实验报告

工图实验报告

————————————————————————————————作者: ————————————————————————————————日期: ?

实验一 一.实验目的 1.学会打开、关闭和保存图形文件和熟悉AutoCAD的界面。 2.熟悉AutoCAD环境及常用绘图命和编辑命令。 3.学会部分常用绘图命令和编辑命令,掌握工具栏的调用方法。二.实验内容 根据立体图和尺寸,在AutoCAD上画出立体图的三视图。

三.实验步骤 (说明:给出实验内容具体描述,以及具体操作步骤) 第一题: 1.启动AutoCAD。 2.选择新建文件 选择一个样板文件,之后打开创建新文件。 3.系统环境设置 设置背景色,窗口元素配置、靶框大小设置 4.绘图单位格式设置。 设置图形单位:长度和角度,精度 5.构件图层,设计颜色,线型及线宽。 粗实线?黑色实线0.7mm 细实线??黑色?实线0.3mm 粗实线?黑色?虚线?0.7mm 6.首先画主视图。 1)选择粗实线图层。 2)首先使用矩形命令(Rectang):依次输入矩形的第一角点坐标和第二角点坐标。 3)再用直线命令(line)依次画出主视图上的轮廓线,在用打断命令(break)在矩形的下边打断合适的一段。 7.画出左视图 1)按一定的尺寸用直线命令画出左视图的所有最大轮廓线,与主视图的高平齐。 2)在选择虚线图层,将看不到的部分用虚线画出。 8.画出俯视图 1)选择粗实线图层。 2)按一定尺寸,与主视图长对正,与左视图的宽相等。画出俯视图的最大轮廓线。

第二题: 1.启动AutoCAD。 2.选择新建文件。 3.系统环境设置 4.构件图层,设计颜色,线型及线宽。 5.画主视图: 1)选择粗实线的图层 2)用矩形命令画出一个长为100,宽为60的矩形。 3)之后用倒角命令将矩形的上边的两侧各选长为25,两侧的边各选30,之后倒角。 4)在用直线命令画出上面的凹槽。之后打断(break)凹槽上方。 5)之后用同样的方法打断长为65的距离。在画出下方的凹槽。 6)在用直线命令画出矩形里面的两个轮廓线。 6.画左视图: 1)用直线命令先画一个与主视图高平齐的矩形。 2)先将矩形下面的两个直角的两边剪切掉长为15高为12 的小矩形。 3)在用直线命令画出矩形内部的轮廓线。 4)切换虚实线的图层。 5)画出立体图的上下两个凹槽的底边轮廓线。 7.画俯视图。 1)切换粗实线图层。 2)首先画一个与主视图长对正,与左视图的宽相等的矩形。 3)用倒角命令将矩形的四个角各倒掉上面为长25,两边为15的角。 4)再用直线画出立体图上方的凹槽的轮廓线。 5)切换虚线图层。 6)用直线命令画出立体图下方的凹槽的轮廓线。 四.实验结果 第一题:

数字图像处理实验报告 (2)

目录 实验一:数字图像的基本处理操作 (2) 1.1:实验目的 (2) 1.2:实验任务和要求 (2) 1.3:实验步骤和结果 (2) 1.4:结果分析 (6) 实验二:图像的灰度变换和直方图变换 (7) 2.1:实验目的 (7) 2.2:实验任务和要求 (7) 2.3:实验步骤和结果 (7) 2.4:结果分析 (11) 实验三:图像的平滑处理 (11) 3.1:实验目的 (11) 3.2:实验任务和要求 (11) 3.3:实验步骤和结果 (12) 3.4:结果分析 (15) 实验四:图像的锐化处理 (16) 4.1:实验目的 (16) 4.2:实验任务和要求 (16) 4.3:实验步骤和结果 (16) 4.4:结果分析 (18)

实验一:数字图像的基本处理操作 1.1:实验目的 1、熟悉并掌握MATLAB、PHOTOSHOP等工具的使用; 2、实现图像的读取、显示、代数运算和简单变换。 3、熟悉及掌握图像的傅里叶变换原理及性质,实现图像的傅里叶变换。 1.2:实验任务和要求 1.读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内分 成三个子窗口来分别显示RGB图像和灰度图像,注上文字标题。 2.对两幅不同图像执行加、减、乘、除操作,在同一个窗口内分成五个子窗口来分 别显示,注上文字标题。 3.对一幅图像进行平移,显示原始图像与处理后图像,分别对其进行傅里叶变换, 显示变换后结果,分析原图的傅里叶谱与平移后傅里叶频谱的对应关系。 4.对一幅图像进行旋转,显示原始图像与处理后图像,分别对其进行傅里 叶变换,显示变换后结果,分析原图的傅里叶谱与旋转后傅里叶频谱的 对应关系。 1.3:实验步骤和结果 1.对实验任务1的实现代码如下: a=imread('d:\tp.jpg'); i=rgb2gray(a); I=im2bw(a,0.5); 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('原图像'); 结果如图1.1 所示:

多用户多目录文件系统(实验报告、完整源代码版)

广东工业大学课程设计任务书 (源代码在附录) 题目名称多用户多级目录文件系统的实现 学生学院计算机学院 专业班级2008级软件工程2班 姓名锟 学号6900 一、课程设计的内容 本课程设计要求设计一个模拟的多用户多级目录的文件系统。通过具体的文件存储空间的管理、文件的物理结构、目录结构和文件操作的实现,加深对文件系统内部功能和实现过程的理解。 二、课程设计的要求与数据 1.在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个多用户多目录的文件系统。 2.文件物理结构可采用显式链接或其他方法。 3.磁盘空闲空间的管理可选择位示图或其他方法。如果采用位示图来管理文件存储空间,并采用显式链接分配方式,则可以将位示图合并到FAT中。4.文件目录结构采用多用户多级目录结构,每个目录项包含文件名、物理地址、长度等信息,还可以通过目录项实现对文件的读和写的保护。目录组织方式可以不使用索引结点的方式,但使用索引结点,则难度系数为1.2。 5.设计一个较实用的用户界面,方便用户使用。要求提供以下相关文件操作:(1)具有login (用户登录) (2)系统初始化(建文件卷、提供登录模块) (3)文件的创建: create (4)文件的打开:open (5)文件的读:read (6)文件的写:write (7)文件关闭:close (8)删除文件:delete (9)创建目录(建立子目录):mkdir (10)改变当前目录:cd (11)列出文件目录:dir (12)退出:logout 6.系统必须可实际演示,选用程序设计语言:C++、C等。

目录 一、设计思想说明 (2) 1.1设计环境 (2) 1.2设计思想 (2) 1.3存储空间管理 (2) 1.4目录结构 (2) 二、数据结构 (3) 2.1虚拟磁盘 (3) 2.2用户的数据文件 (3) 2.3目录文件 (3) 2.4管理目录文件的类 (3) 2.5管理用户的类 (4) 三、功能实现 (4) 3.1登陆系统 (4) 3.2系统初始化 (4) 3.3文件的创建 (5) 3.4文件的打开 (5) 3.5文件删除 (5) 3.6文件的读 (5) 3.7创建目录 (5) 3.8查看当前目录 (5) 3.9删除目录 (5) 3.10返回上一级目录 (5) 3.11退出 (5) 四、操作思想 (5) 五、界面演示 (6) 5.1登陆界面 (6) 5.2管理员登陆成功后的界面 (6) 5.3用户登陆成功后的界面 (6) 六、系统具体运行演示 (7) 6.1文件的创建与查看(读文件) (7) 6.2目录的创建与查看 (7) 6.3文件系统空间的查看 (7) 七、实验体会 (8) 八、收集的资料及主要参考文献 (8)

图像处理实验报告

实验报告 实验课程名称:数字图像处理 班级:学号:姓名: 注:1、每个实验中各项成绩按照10分制评定,每个实验成绩为两项总和20分。 2、平均成绩取三个实验平均成绩。 2016年 4 月18日

实验一 图像的二维离散傅立叶变换 一、实验目的 掌握图像的二维离散傅立叶变换以及性质 二、实验要求 1) 建立输入图像,在64?64的黑色图像矩阵的中心建立16?16的白色矩形图像点阵, 形成图像文件。对输入图像进行二维傅立叶变换,将原始图像及变换图像(三维、中心化)都显示于屏幕上。 2) 调整输入图像中白色矩形的位置,再进行变换,将原始图像及变换图像(三维、中 心化)都显示于屏幕上,比较变换结果。 3) 调整输入图像中白色矩形的尺寸(40?40,4?4),再进行变换,将原始图像及变 换图像(三维、中心化)都显示于屏幕上,比较变换结果。 三、实验仪器设备及软件 HP D538、MATLAB 四、实验原理 傅里叶变换作为分析数字图像的有利工具,因其可分离性、平移性、周期性和共轭对称性可以定量地方分析数字化系统,并且变换后的图像使得时间域和频域间的联系能够方便直观地解决许多问题。实验通过MATLAB 实验该项技能。 设),(y x f 是在空间域上等间隔采样得到的M ×N 的二维离散信号,x 和y 是离散实变量,u 和v 为离散频率变量,则二维离散傅里叶变换对一般地定义为 ∑∑ -=-=+-= 101 )],( 2ex p[),(1 ),(M x N y N yu M xu j y x f MN v u F π,1,0=u …,M-1;y=0,1,…N-1 ∑∑-=-=+=101 )],( 2ex p[),(),(M x N y N uy M ux j v u F y x f π ,1,0=x …,M-1;y=0,1,…N-1 在图像处理中,有事为了讨论上的方便,取M=N ,这样二维离散傅里叶变换对就定义为 ,]) (2ex p[),(1 ),(101 ∑∑ -=-=+- = N x N y N yu xu j y x f N v u F π 1,0,=v u …,N-1 ,]) (2ex p[ ),(1 ),(101 ∑∑-=-=+= N u N v N vy ux j v u F N y x f π 1,0,=y x ,…,N-1 其中,]/)(2exp[N yv xu j +-π是正变换核,]/)(2exp[N vy ux j +π是反变换核。将二维离散傅里叶变换的频谱的平方定义为),(y x f 的功率谱,记为 ),(),(|),(|),(222v u I v u R v u F v u P +== 功率谱反映了二维离散信号的能量在空间频率域上的分布情况。 五、实验步骤、程序及结果: 1、实验步骤: (1)、编写程序建立输入图像; (2)、对上述图像进行二维傅立叶变换,观察其频谱 (3)、改变输入图像中白框的位置,在进行二维傅里叶变换,观察频谱;

信息系统开发与设计实验九活动图、状态图

福建农林大学计算机与信息学院实验报告 1.实验项目名称:面向对象分析与设计–活动图、状态图 2.实验目的 1.熟悉活动图的基本功能和使用方法。 2.熟悉状态图的基本功能和使用方法。 3.掌握如何使用建模工具绘制活动图方法。 4.掌握如何使用建模工具绘制状态图方法。 3.实验器材 1.计算机一台。 2.Rational Rose 工具软件。 4.实验内容 (1)根据学院的图书管理系统开发进度,在完成对系统的需求建模,得到用例模型后,应针对每个用例进行业务分析,说明其具体的业务流程、在删除读者用例描述的基础上,系统分析部指派您完成该项任务。要求:用活动图来描述系统中已知用例的业务过程: 1.描述添加读者用例。 2.描述添加管理员用例。 3.描述新加书籍用例 (2) 通过前面内容的学习,在学院图书馆的图书馆管理系统的需求的初步分析,得出系统的用例图和相应的活动态。通过这两类图我们可以初步了解系统的业务处理过程,但对业务处理过程的处理状态间转换了解仍不够,这不利于设计人员对系统业务的进一步理解,而状态图能从对象的动态行为的角度去描述系统的业务活动。通过还书用例的状态图绘制学习,完成如下任务: 1. 完成图书业务模块中借书用例的状态图。 2. 完成图书业务模块中新加书籍用例的状态图。 绘制“删除读者信息”用例的活动图的实验步骤 删除读者信息一般按照以下步骤进行: (1)管理员在录入界面,输入待删除的读者名; (2)“业务逻辑”组件在数据库中,查找待删除的读者名; (3)如果不存在,则显示出错信息,返回步骤(1),如果存在则继续; (4)“业务逻辑”组件判断“待删除的读者”是否可以删除; (5)如果不可以,则显示出错信息,返回步骤(8),如果可以则继续; (6)在数据库中,删除相关信息; (7)显示删除成功信息; (8)结束。 5. 实验报告要求 1.整理实验结果。

实验报告

课程设计 课程名称_____ 操作系统____ 题目名称多用户多级目录文件系统的实现 学生学院____ _计算机学院_______ __ 专业班级_计算机科学与技术04级1班__学号3104006429 学生姓名____ __胡海洪__ ___ 指导教师______ __林穗___ _____ 2007年6月25日

广东工业大学课程设计任务书 题目名称多用户多级目录文件系统的实现 学生学院计算机学院 专业班级计算机科学与技术04级1班 姓名胡海洪 学号3104006429 一、课程设计的内容 本课程设计要求设计一个模拟的多用户多级目录的文件系统。通过具体的文件存储空间的管理、文件的物理结构、目录结构和文件操作的实现,加深对文件系统内部功能和实现过程的理解。 二、课程设计的要求与数据 1.在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个多用户多目录的文件系统。 2.文件物理结构可采用显式链接或其他方法。 3.磁盘空闲空间的管理可选择位示图或其他方法。如果采用位示图来管理文件存储空间,并采用显式链接分配方式,则可以将位示图合并到FAT中。4.文件目录结构采用多用户多级目录结构,每个目录项包含文件名、物理地址、长度等信息,还可以通过目录项实现对文件的读和写的保护。目录组织方式可以不使用索引结点的方式,但使用索引结点,则难度系数为1.2。 5.设计一个较实用的用户界面,方便用户使用。要求提供以下相关文件操作:(1)具有login (用户登录) (2)系统初始化(建文件卷、提供登录模块) (3)文件的创建: create (4)文件的打开:open (5)文件的读:read (6)文件的写:write (7)文件关闭:close (8)删除文件:delete (9)创建目录(建立子目录):mkdir (10)改变当前目录:cd (11)列出文件目录:dir (12)退出:logout 6.系统必须可实际演示,选用程序设计语言:C++、C等。

数字图像处理实验报告

数字图像处理实验报告

实验一数字图像处理编程基础 一、实验目的 1. 了解MA TLAB图像处理工具箱; 2. 掌握MA TLAB的基本应用方法; 3. 掌握MA TLAB图像存储/图像数据类型/图像类型; 4. 掌握图像文件的读/写/信息查询; 5. 掌握图像显示--显示多幅图像、4种图像类型的显示方法; 6. 编程实现图像类型间的转换。 二、实验内容 1. 实现对图像文件的读/写/信息查询,图像显示--显示多幅图像、4种图像类型的显示方法、图像类型间的转换。 2. 运行图像处理程序,并保存处理结果图像。 三、源代码 I=imread('cameraman.tif') imshow(I); subplot(221), title('图像1'); imwrite('cameraman.tif') M=imread('pout.tif') imview(M) subplot(222), imshow(M); title('图像2'); imread('pout.bmp') N=imread('eight.tif') imview(N) subplot(223), imshow(N); title('图像3'); V=imread('circuit.tif') imview(V) subplot(224), imshow(V); title('图像4');

N=imread('C:\Users\Administrator\Desktop\1.jpg') imshow(N); I=rgb2gary(GRB) [X.map]=gary2ind(N,2) RGB=ind2 rgb(X,map) [X.map]=gary2ind(I,2) I=ind2 gary(X,map) I=imread('C:\Users\dell\Desktop\111.jpg'); subplot(231),imshow(I); title('原图'); M=rgb2gray(I); subplot(232),imshow(M); [X,map]=gray2ind(M,100); subplot(233),imshow(X); RGB=ind2rgb(X,map); subplot(234),imshow(X); [X,map]=rbg2ind(I); subplot(235),imshow(X); 四、实验效果

实验六 状态图

实验六状态图 [实验目的和要求] 1、掌握状态的定义和组成部分。 2、掌握UML中状态的表示方法。 3、掌握转换的定义及转换的5要素。 4、了解触发事件、监护条件、动作的定义。 5、掌握阅读和绘制状态图的方法。 [实验环境] 1、Windows操作系统(XP、Vista等) 2、Rational Rose2003软件(或RSA8.0) [实验内容和步骤] 1、说出下面状态图所表达的信息。 2、说出下面状态图所表达的信息,并指出蓝色部分代表的含义。

3、根据下面状态图回答问题。 、 GFloor UP entry/ CloseDoor do/ E exit/ motor.stop() WaitingForFloorNum entry/ openDoor Return entry/ closeDoor do/ motor.moveDown() exit/ F Dow n entry/ closeDoor do/ D exit/ motor.stop() goToFloor(n) arrive() arrive() request(floor,direction)[ floor>0 ] request(floor,direction)[ floor==0 ] timeout[ getNextFloor()> A ] B[ C ] timeout[ getNextFloor()==-1&¤tFloor==0 ] / closeDoor arrive() 上图是一个表示电梯系统的状态图,该系统中Controller类和Motor类的详细定义如下图所示: 根据类图,完成上面 状态图中 A,B,C,D,E,F处的内 容。

文件系统存储空间管理模拟实验报告

课程名称计算机操作系统实验名称文件系统存储空间管理模拟姓名学号 专业班级实验日期 成绩指导老师 一、实验目的 根据提出的文件分配和释放请求,动态显示磁盘空闲空间的 态以及文件目录的变化,以位示图和索引分配为例:每次执行请求后要求显示或打印位示图的修改位置、分配和回收磁盘的物理块地址、更新的位示图、目录。 二、实验原理 用数组表示位示图,其中的每一位对应磁盘一个物理块的状态,0表示、空闲,1表示分配;当请求分配一个磁盘块时,寻找到数组中为0的位,计算相对磁盘块号,并计算其在磁盘中的物理地址(柱面号、磁道号、物理块号),并将其状态由0变到1。当释放某一物理块时,已知其在磁盘中的物理地址,计算其相对磁盘块号,再找到位示图数组中的相应位,将其状态由1变为0。 三、主要仪器设备 PC机(含有VC) 四、实验容与步骤 实验容:1. 模拟文件空间分配、释放过程,可选择连续分配、链式分配、索引分配法;2. 文件空闲空间管理,可采用空白块链、空白目录、位示图法; 步骤如下: 1. 输入磁盘基本信息参数,计算位示图大小,并随机初始化位示图; (1)磁盘基本信息:磁盘柱面数m, 每柱面磁道数p, 每磁道物理块数q; (2)假设采用整数数组存放位示图,则数组大小为: Size= ceil((柱面数*每柱面磁道数*每磁道物理块数)/(sizeof(int)*8))(3)申请大小为size的整数数组map,并对其进行随机初始化。 例如:假设m=2, p=4, q=8, 共有64个磁盘块,若sizeof(int)=2, 则位示图大小为4,map[4]如下: 地址到高地址位上。即map[0]的第0位到第15位分别对应0号磁盘块到15号磁盘块的状态,map[1]的第0位到第15位对应16号磁盘块到31号磁盘块的状

图像处理 实验报告

摘要: 图像处理,用计算机对图像进行分析,以达到所需结果的技术。又称影像处理。基本内容图像处理一般指数字图像处理。数字图像是指用数字摄像机、扫描仪等设备经过采样和数字化得到的一个大的二维数组,该数组的元素称为像素,其值为一整数,称为灰度值。图像处理技术的主要内容包括图像压缩,增强和复原,匹配、描述和识别3个部分。图像处理一般指数字图像处理。 数字图像处理的目的是改善图像的质量,它以人为对象,以改善人的视觉效果为目的。目前,图像处理演示系统应用领域广泛医学、军事、科研、商业等领域。因为数字图像处理技术易于实现非线性处理,处理程序和处理参数可变,故是一项通用性强,精度高,处理方法灵活,信息保存、传送可靠的图像处理技术。本图像处理演示系统以数字图像处理理论为基础,对某些常用功能进行界面化设计,便于初级用户的操作。 设计要求 可视化界面,采用多幅不同形式图像验证系统的正确性; 合理选择不同形式图像,反应各功能模块的效果及验证系统的正确性 对图像进行灰度级映射,对比分析变换前后的直方图变化; 1.课题目的与要求 目的: 基本功能:彩色图像转灰度图像 图像的几何空间变换:平移,旋转,剪切,缩放 图像的算术处理:加、减、乘 图像的灰度拉伸方法(包含参数设置); 直方图的统计和绘制;直方图均衡化和规定化; 要求: 1、熟悉图像点运算、代数运算、几何运算的基本定

义和常见方法; 2、掌握在MTLAB中对图像进行点运算、代数运算、几何运算的方法 3、掌握在MATLAB中进行插值的方法 4、运用MATLAB语言进行图像的插值缩放和插值旋转等 5、学会运用图像的灰度拉伸方法 6、学会运用图像的直方图设计和绘制;以及均衡化和规定化 7、进一步熟悉了解MATLAB语言的应用,将数字图像处理更好的应用于实际2.课题设计内容描述 1>彩色图像转化灰度图像: 大部分图像都是RGB格式。RGB是指红,绿,蓝三色。通常是每一色都是256个级。相当于过去摄影里提到了8级灰阶。 真彩色图像通常是就是指RGB。通常是三个8位,合起来是24位。不过每一个颜色并不一定是8位。比如有些显卡可以显示16位,或者是32位。所以就有16位真彩和32位真彩。 在一些特殊环境下需要将真彩色转换成灰度图像。 1单独处理每一个颜色分量。 2.处理图像的“灰度“,有时候又称为“高度”。边缘加强,平滑,去噪,加 锐度等。 3.当用黑白打印机打印照片时,通常也需要将彩色转成灰白,处理后再打印 4.摄影里,通过黑白照片体现“型体”与“线条”,“光线”。 2>图像的几何空间变化: 图像平移是将图像进行上下左右的等比例变化,不改变图像的特征,只改变位置。 图像比例缩放是指将给定的图像在x轴方向按比例缩放fx倍,在y轴按比例缩放fy倍,从而获得一幅新的图像。如果fx=fy,即在x轴方向和y轴方向缩放的比率相同,称这样的比例缩放为图像的全比例缩放。如果fx≠fy,图像的比例缩放会改变原始图象的像素间的相对位置,产生几何畸变。 旋转。一般图像的旋转是以图像的中心为原点,旋转一定的角度,也就是将图像上的所有像素都旋转一个相同的角度。旋转后图像的的大小一般会改变,即可以把转出显示区域的图像截去,或者扩大图像范围来显示所有的图像。图像的旋转变换也可以用矩阵变换来表示。

状态图实验报告

南京信息工程大学实验(实习)报告 实验名称状态图实验(实习)日期 2014.04.26 得分指导老师 系专业班级一、实验目的 1.熟悉活动图的基本功能和使用方法。 2.掌握如何使用建模工具绘制活动图方法。 二、实验器材 1.计算机一台。 2.rational rose 工具软件。 三、实验内容 通过前面内容的学习,完成了对图书馆的图书馆管理系统的需求的初步分析,得出系统的用例图和相应的活动态。通过这两类图我们可以初步了解系统的业务处理过程,但对业务处理过程的处理状态间转换了解仍不够,这不利于设计人员对系统业务的进一步理解,而状态图能从对象的动态行为的角度去描述系统的业务活动。因此,指派你运用本节所学的状态图,完成如下任务: 1. 完成图书业务模块中还书用例的状态图。 四、实验步骤 1.业务分析:由前面章节对图书馆管理系统中的还书主要业务的描述和分析可知,还书业务的动态行为是由:空闲(idle)、图书查找(finding)、还书(reversion)、失败(failure)、归还成功(success)5种状态及激活相互转换的事件。 2.绘制状态图:请您根据分析运用uml绘制还书用例的状态图。 分析: 还书的状态图,还书的主要业务都是由管理员来完成,首先管理员必须先登录系统,并通过验证后,便可以进行下一步的操作,查找该书的相关信息,如存在,则进行还书操作,如不存在该信息,则给出提示信息; 绘图步骤: (1)在用例图中的还书(revesion)用例,单击右键,如图3.1所示,新建一个状态图,命名为revesion状态图。 (2)双击“receivesion”状态图,展开后,在左边的工具栏上选取一个实心圆点,此结点为开始结点;当还书的时候,操作者先要询问系统的状态,如果系统忙,操作者则必需等待,因此,得到系统的两种状态。 (3)操作者在询问系统和状态后,得到两种状态,如果系统忙,操作者必需要等待、结束,重返步骤(1)。 (4)如系统空闲,则进行对还书的信息进行查询操作;查询也有两种结果,一是查询得到该书的相关信息,二查询不到该书的相关信息;则此时有两种状态,需要建立两种状态。 (5)最后,操作者进行了操作后,系统会给出操作的结果给操作者;操作成功或失败,都会有提示信息给出。整个的还书的过程便完成。 (7)根据分析设计情况,进一步添加或细化状态图。 五、实验报告要求 1.整理实验结果。 2.小结实验心得体会。 通过本次试验学习到了项目中状态图的绘制,了解了他们之间的关系以及关系处理的方法,熟悉了对rational rose 工具软件的使用,在以后做软件项目设计有很大的帮助。 2篇二:uml建模动态建模之状态图实验报告 实验报告册

简单文件系统的实现实验报告

操作系统课程设计报告简单文件系统的实现 专业: 班级: 姓名: 学号: 老师:

一、课程设计的目的 1. 通过具体的文件存储空间的管理、文件的物理结构、目录结构和文件操作的实现,加深对文件系统内部数据结构、功能以及实现过程的理解。 二、课程设计要求 1. 在内存中开辟一个虚拟磁盘空间作为文件存储分区,在其上实现一个简单的基于多级目录的单用户单任务系统中的文件系统。在退出该文件系统的使用时,应将该虚拟文件系统以一个Windows 文件的方式保存到磁盘上,以便下次可以再将它恢复到内存的虚拟磁盘空间中。2文件存储空间的分配可采用显式链接分配或其他的办法。 3空闲磁盘空间的管理可选择位示图或其他的办法。如果采用位示图来管理文件存储空间,并采用显式链接分配方式,那么可以将位示图合并到FAT中。 文件目录结构采用多级目录结构。为了简单起见,可以不使用索引结点,其中的每个目录项应包含文件名、物理地址、长度等信息,还可以通过目录项实现对文件的读和写的保护。 要求提供以下有关的操作命令: my_format:对文件存储器进行格式化,即按照文件系统的结构对虚拟磁盘空间进行布局,并在其上创建根目录以及用于管理文件存储空间等的数据结构。 my_mkdir:用于创建子目录。 my_rmdir:用于删除子目录。 my_ls:用于显示目录中的内容。 my_cd:用于更改当前目录。 my_create:用于创建文件。 my_open:用于打开文件。 my_close:用于关闭文件。 my_write:用于写文件。 my_read:用于读文件。 my_rm:用于删除文件。 my_exitsys:用于退出文件系统。 三、程序的设计细想和框图 1.打开文件函数fopen() (1)格式:FILE *fopen(const char *filename,const char *mode) (2)功能:按照指定打开方式打开指定文件。 (3)输入参数说明: filename:待打开的文件名,如果不存在就创建该文件。 mode:文件打开方式,常用的有: "r":为读而打开文本文件(不存在则出错)。 "w":为写而打开文本文件(若不存在则创建该文件;反之,则从文件起始位置写,原内容将被覆盖)。 "a":为在文件末尾添加数据而打开文本文件。(若不存在则创建该文件;反之,在原文件末尾追加)。 "r+":为读和写而打开文本文件。(读时,从头开始;在写数据时,新数据只覆盖所占的空间,其后不变) 。 "w+":首先建立一个新文件,进行写操作,随后可以从头开始读。(若文件存在,原内容将全部消失) 。 "a+":功能与"a"相同;只是在文件末尾添加新的数据后,可以从头开始读。 另外,上述模式字符串中都可以加一个“b”字符,如rb、wb、ab、rb+、wb+、ab+等组合,

图的实验报告

《数据结构》 实验报告 题目: 图 一、实现图得邻接矩阵与邻接表存储(一)需求分析 对于下图所示得有向图G,编写一个程序完成如下功能: 1.建立G得邻接矩阵并输出之 2.由G得邻接矩阵产生邻接表并输出之 3.再由2得邻接表产生对应得邻接矩阵并输出之 (二)系统设计 1、本程序中用到得所有抽象数据类型得定义; typedef struct { int no; InfoType info; } VertexType; //顶点类型 typedef struct //图得定义 { int edges[MAXV][MAXV]; int vexnum,arcnum; VertexType vexs[MAXV]; } MGraph; //图得邻接矩阵类型typedef struct ANode //弧得结点结构类型 { int adjvex; struct ANode *nextarc;

InfoType info; } ArcNode; typedef int Vertex; typedef struct Vnode //邻接表头结点得类型 { Vertex data; ArcNode *firstarc; //指向第一条弧 } VNode; typedef VNode AdjList[MAXV]; //AdjList就是邻接表类型 typedef struct { AdjList adjlist; //邻接表 int n,e; } ALGraph; //图得邻接表类型 2、主程序得流程以及各程序模块之间得层次调用关系,函数得调用关系图: void MatToList(MGraph g,ALGraph *&G) 将邻接矩阵g转换成邻接表G void DispMat(MGraph g) 输出邻接矩阵g void DispAdj(ALGraph *G) 输出邻接表G int OutDegree(ALGraph *G,int v) 求图中每个顶点得出度 (三)调试分析 调试过程中还就是出现了一些拼写错误,经检查后都能及时修正。有些就是语法设计上得小错误,比如一些参变量得初始值设置错误,使得程序调试出错。在小组讨论分析后纠正了这些结果,并尽量改进了算法得性能,减小时间复杂度。 将邻接矩阵g转换成邻接表G,输出邻接矩阵g,输出邻接表G得算法时间复杂度都就是O(n^2)。 通过这次实验,对图得存储方法有了更深刻得印象。 (四)测试结果 测试结果: (1)有向图G得邻接矩阵为 0 1 0 4 0 0 9 2 3 5 8 0 0 0 6 0 (2)图G得邻接矩阵转换成得邻接表为:

相关文档
最新文档