测绘软件实习报告Word文件下载.docx
- 文档编号:16779980
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:52
- 大小:101.60KB
测绘软件实习报告Word文件下载.docx
《测绘软件实习报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《测绘软件实习报告Word文件下载.docx(52页珍藏版)》请在冰豆网上搜索。
G)
inti,j,n=g.n;
ArcNode*p;
G=(ALGraph*)malloc(sizeof(ALGraph));
for(i=0;
i<
n;
i++)
G->
adjlist[i].firstarc=NULL;
for(j=n-1;
j>
=0;
j--)
if(g.edges[i][j]!
=0)
{
p=(ArcNode*)malloc(sizeof(ArcNode));
p->
adjvex=j;
info=g.edges[i][j];
nextarc=G->
adjlist[i].firstarc;
G->
adjlist[i].firstarc=p;
}
G->
n=n;
e=g.e;
}
voidListToMat(ALGraph*G,MGraph&
g)
inti,j,n=G->
for(j=0;
j<
j++)
g.edges[i][j]=0;
for(i=0;
{
p=G->
while(p!
=NULL)
g.edges[i][p->
adjvex]=p->
info;
p=p->
nextarc;
}
g.n=n;
g.e=G->
e;
voidDispMat(MGraphg)
inti,j;
intzz=99;
g.n;
{
if(g.edges[i][j]==INF)
printf("
%3s"
"
"
);
else
%3d"
g.edges[i][j]);
printf("
\n"
}
}voidDispAdj(ALGraph*G)
inti;
G->
p=G->
if(p!
i);
while(p!
p->
adjvex);
p=p->
printf("
};
intvisited[MAXV];
voidDFS(ALGraph*G,intv)
visited[v]=1;
printf("
v);
p=G->
adjlist[v].firstarc;
while(p!
if(visited[p->
adjvex]==0)
DFS(G,p->
p=p->
voidDFS1(ALGraph*G,intv)
ArcNode*St[MAXV];
inttop=-1,w,i;
visited[i]=0;
top++;
St[top]=G->
while(top>
-1)
p=St[top];
top--;
w=p->
adjvex;
if(visited[w]==0)
w);
visited[w]=1;
top++;
St[top]=G->
adjlist[w].firstarc;
break;
voidBFS(ALGraph*G,intv)
intqueue[MAXV],front=0,rear=0;
intvisited[MAXV];
intw,i;
rear=(rear+1)%MAXV;
queue[rear]=v;
while(front!
=rear)
front=(front+1)%MAXV;
w=queue[front];
if(visited[p->
visited[p->
adjvex]=1;
rear=(rear+1)%MAXV;
queue[rear]=p->
voidPrim(MGraphg,intv)
intlowcost[MAXV],min,n=g.n;
intclosest[MAXV],i,j,k;
lowcost[i]=g.edges[v][i];
closest[i]=v;
n-1;
min=INF;
if(lowcost[j]!
=0&
&
lowcost[j]<
min)
min=lowcost[j];
k=j;
边(%d,%d)权为:
%d\n"
closest[k],k,min);
lowcost[k]=0;
for(j=0;
if(g.edges[k][j]!
g.edges[k][j]<
lowcost[j])
{
lowcost[j]=g.edges[k][j];
closest[j]=k;
}
/////////////////////////////////////typedefstruct
intu;
intv;
intw;
}Edge;
voidSortEdge(MGraphg,EdgeE[])
inti,j,k=0;
Edgetemp;
if(g.edges[i][j]<
INF)
E[k].u=i;
E[k].v=j;
E[k].w=g.edges[i][j];
k++;
for(i=0;
k;
temp=E[i];
j=i-1;
while(j>
temp.w<
E[j].w)
E[j+1]=E[j];
j--;
E[+1]=temp;
voidKruskal(EdgeE[],intn,inte)
inti,j,m1,m2,sn1,sn2,k;
intvset[MAXV];
vset[i]=i;
k=1;
j=0;
while(k<
n)
m1=E[j].u;
m2=E[j].v;
sn1=vset[m1];
sn2=vset[m2];
if(sn1!
=sn2)
(%d,%d):
m1,m2,E[j].w);
k++;
if(vset[i]==sn2)
vset[i]=sn1;
j++;
/////////////////////////////////////
voidmain()
inti,j,u=3;
MGraphg,g1;
ALGraph*G;
EdgeE[MAXV];
intB[MAXV][11];
intA[MAXV][6]={{0,5,0,7,0,0},{0,0,4,0,0,0},{8,0,0,0,0,9},{0,0,5,0,0,6},{0,0,0,5,0,0},{3,0,0,0,1,0}};
g.n=6;
g.e=10;
g.edges[i][j]=A[i][j];
图G的邻接表:
MatToList(g,G);
DispAdj(G);
图G的邻接表转换成邻接矩阵\n"
ListToMat(G,g1);
DispMat(g1);
从顶点0开始的DFS(递归算法):
DFS(G,0);
从顶点0开始的DFS(非递归算法):
DFS1(G,0);
从顶点0开始的BFS(递归算法):
BFS(G,0);
B[i][j]=INF;
B[0][1]=1;
B[0][2]=4;
B[0][3]=12;
B[0][5]=2;
B[1][2]=8;
B[2][3]=5;
B[2][5]=9;
B[3][4]=3;
B[4][5]=7;
A[j][i]=A[i][j];
for(j=0;
g.edges[i][j]=B[i][j];
普里姆算法求解结果:
Prim(g,0);
SortEdge(g,E);
克鲁斯卡尔算法求解结果:
Kruskal(E,g.n,g.e);
三、实验成果
四、实验体会
通过此次上机实践,基本上掌握了图的创建过程,对于程序设计,在设计过程中遇到很多问题,但是通过相互讨论及老师指导,已经基本掌握了基于深度优先的图的遍历算法的设计与实现、基于广度优先的图的遍历算法的设计与实现、基于Prim算法的最小生成树的构建、基于Kruskal算法的最小生成树的构建。
实验二快速排序算法的实现
通过上机实践巩固课堂所学快速排序算法相关知识,通过讨论,同学之间相互学习,彻底了解实验内容,完成实验作业。
voidXXXquicksort(intdata[],intlow,inthigh)
inti,pivot,j;
if(low<
high)
pivot=data[low];
i=low;
j=high;
while(i<
j)
while(i<
j&
data[j]>
=pivot)
if(i<
data[i++]=data[j];
data[i]<
i++;
data[j--]=data[i];
data[i]=pivot;
XXXquicksort(data,low,i-1);
XXXquicksort(data,i+1,high);
inta[6];
cout<
<
"
请输入待排序数组"
endl;
6;
cin>
>
a[i];
由输入得结果为:
for(i=0;
cout<
a[i]<
;
XXXquicksort(a,0,5);
快速排序后的结果为:
此次上机实践主要是实现快速排序算法,这个实验相对于其他实验,比较简单,做起来问题不是很多,经过几次调试,基本上就能完成。
实验三矩阵类的设计与实现
通过上机实践,巩固课堂老师所讲关于矩阵设计的知识,通过反复的调试,找错,设计出矩阵。
stdlib.h>
math.h>
classXXXMatrix
private:
introws,columns;
double**element;
public:
XXXMatrix(introws=4,intcolumns=4);
XXXMatrix(int*mat,introws,intcolumns);
XXXMatrix(constXXXMatrix&
m);
~XXXMatrix();
intrintv(intn,doublea[][4]);
XXXMatrix&
inverse(XXXMatrix&
mat);
transpose(doublea[][4]);
voidinit(introws,intcolumns);
doubleget(inti,intj);
boolset(inti,intj,intvalue);
friendostream&
operator<
(ostream&
out,XXXMatrix&
mat);
operator+=(XXXMatrix&
operator=(constXXXMatrix&
booloperator==(constXXXMatrix&
booloperator!
=(constXXXMatrix&
operator-(XXXMatrix&
operator-();
operator*(XXXMatrix&
voidXXXMatrix:
:
init(introws,intcolumns)
if(rows<
=0||columns<
throw"
矩阵行或列数非正数异常"
this->
rows=rows;
columns=columns;
element=newdouble*[rows];
for(inti=0;
rows;
element[i]=newdouble[columns];
for(intj=0;
columns;
element[i][j]=0;
XXXMatrix:
XXXMatrix(introws,intcolumns)
init(rows,columns);
XXXMatrix(int*mat,introws,intcolumns)
for(inti=0;
for(intj=0;
element[i][j]=*(mat+i*columns+j);
XXXMatrix(constXXXMatrix&
m)
init(m.rows,m.columns);
m.rows;
for(intj;
m.columns;
element[i][j]=m.element[i][j];
~XXXMatrix()
delete(element[i]);
delete(element);
doubleXXXMatrix:
get(inti,intj)
if(i>
rows&
columns)
returnelement[i][j];
boolXXXMatrix:
set(inti,intj,intvalue)
element[i][j]=value;
returntrue;
returnfalse;
ostream&
operator<
out,XXXMatrix&
mat)
out<
矩阵XXXMatrix("
mat.rows<
x"
mat.columns<
)"
mat.rows;
mat.columns;
out<
mat.element[i][j]<
out<
returnout;
XXXMatrix&
XXXMatrix:
if(this->
rows==mat.rows&
this->
columns==mat.columns)
element[i][j]=mat.element[i][j];
return*this;
throw"
两个矩阵阶数不同,不能相加"
operator==(constXXXMatrix&
if(this->
element[i][j]!
=mat.element[i][j])
break;
returnfalse;
else
returntrue;
operator!
{if(this->
element[i][j]==mat.element[i][j])
operator-(XX
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 测绘 软件 实习 报告