当前位置:范文大全 > 公文范文 > 测绘软件实习报告

测绘软件实习报告

发布时间:2021-10-23 11:32:28

测绘软件实习报告 本文关键词:测绘,实习报告,软件

测绘软件实习报告 本文简介:中国矿业大学测绘软件设计与实现实验报告学号:姓名:班级:指导教师:王永波实验一二叉树的构建及其遍历算法的实现实验目的:完成二叉树的构建以及二叉树的遍历等,加深对树以及二叉树的遍历相关知识的理解。实验内容:1.二叉树类的定义及建立。2.二叉树的前序、中序、后序遍历。主要代码:templateclass

测绘软件实习报告 本文内容:

中国矿业大学

测绘软件设计与实现

实验报告

号:

名:

级:

指导教师:

王永波

实验一

二叉树的构建及其遍历算法的实现

实验目的:

完成二叉树的构建以及二叉树的遍历等,加深对树以及二叉树的遍历相关知识的理解。

实验内容:

1.二叉树类的定义及建立。

2.二叉树的前序、中序、后序遍历。

主要代码:

template

class

C_LJH_BinTree

{

public:

C_LJH_BinTree();//构造函数,根据输入前序序列由键盘输入

~C_LJH_BinTree();//析构函数

void

PreOrder();//前序遍历

void

InOrder();//中序遍历

void

PostOrder();//后序遍历

private:

T

data;

C_LJH_BinTreelchild,*rchild;

bool

NO_Die;

};

template

C_LJH_BinTree::C_LJH_BinTree()

{

NO_Die

=

false;

lchild

=

NULL;

rchild

=

NULL;

char

ch;

cin>>ch;

if

(ch

==

#

)

{

NO_Die

=

true;//若为#,代表空节点

}

else

{

this->data

=

ch;//保存输入的节点

//左子树

C_LJH_BinTreenewChild0

=

new

C_LJH_BinTree();

if

(newChild0->NO_Die)

delete

newChild0;

else

this->lchild=

newChild0;

//右子树

C_LJH_BinTreenewChild1

=

new

C_LJH_BinTree();//直接创建子节点,

if

(newChild1->NO_Die)

delete

newChild1;

else

this->rchild=

newChild1;

}

}

//析构函数

template

C_LJH_BinTree::~C_LJH_BinTree()

{

if

(lchild)

delete

lchild;

//删除父节点之前,先删除子节点

if

(rchild)

delete

rchild;

}

//前序遍历

template

void

C_LJH_BinTree::PreOrder()

{

coutdatalchild->PreOrder();

if

(rchild!=NULL)

this->rchild->PreOrder();

}

//中序遍历

template

void

C_LJH_BinTree::InOrder()

{

if

(lchild)

lchild->InOrder();

coutdataInOrder();

}

//后序遍历

template

void

C_LJH_BinTree::PostOrder()

{

if

(lchild)

lchild->PostOrder();

if

(rchild)

rchild->PostOrder();

coutdata

m_tree;

cout=0//v不在图中,不删除

int

i,j;

VerticesList[v]=VerticesList[numVertices-1];//顶点表中删除该结点

for(i=0;i0//输入顶点数n和边数m

cout>e1;

this->insertVertex(e1);}

i=0;

while(i>e1>>e2>>weight;//输入端点信息

j=this->getVertexPos(e1);//查顶点号

k=this->getVertexPos(e2);

if(j==-1||k==-1)

coutinsertEdge(j,k,weight);

i++;}}

return

true;}

bool

LJH_Graphmtx::output()//输出函数

{int

i,j,n,m;

char

e1,e2;

int

w;

n=this->NumberOfVertices();

m=this->NumberOfEdges();

coutgetWeight(i,j);

if(w>0

e2=this->getValue(j);coutcloseedge[j].lowcost)

{

min=j;

}

}

}

i=min;

cout>u;

int

i=this->getVertexPos(u);

visit[i]=1;

for(int

j=0;j

>

_A;

int

_row,/*行*/

_column;

//

};

void

LJH_CMatrix::input()//输入函数

{

int

i,j;

cout>_row;

cout>_column;

cout>_A[i][j];

}

}

void

LJH_CMatrix::output()//输出函数

{

int

i,j;

for(i=0;i_column;

tem._column=this->_row;

int

i,j;

for(i=0;i_row-1;

temp._column=this->_column-1;

int

m,n,k=0,l;

for(m=0;myuzishi(0,i).hanglieshi();

}

return

sum;

}

}

LJH_CMatrix

LJH_CMatrix::bansui()//求伴随矩阵

{

LJH_CMatrix

temp;

temp._column=this->_column;

temp._row=this->_row;

int

i,j;

for(i=0;iyuzishi(i,j).hanglieshi();}

return

temp;

}

LJH_CMatrix

LJH_CMatrix::inverse()//矩阵求逆

{

LJH_CMatrix

temp;

int

n;

n=this->hanglieshi();

temp=this->bansui();

int

i,j;

for(i=0;imax)

{max=fabs(_A[i][k]);

m=i;}

}

return

m;

}

LJH_CMatrix

LJH_CMatrix::inv()//矩阵求逆,通过行列变换

{

int

i,j,m;

LJH_CMatrix

E1;

E1=*this;

if(this->_row!=this->_column)

{

cerr_column-1;i>0;i--)//

{double

xishu1;

for(m=0;m_column;j++)

{

E1._A[m][j]=E1._A[m][j]-xishu1*E1._A[i][j];

E._A[m][j]=E._A[m][j]-xishu1*E._A[i][j];

}}}

///////////////////////////////////矩阵单位化

double

xishu3;

for(i=0;i=0;i--)

//自下往上逐步回代求得真解

{

for(j=m._row-1;j>=i+1;j--)

m._A[i][m._row]

-=

m._X[j]*m._A[i][j];

m._X[i]=

m._A[i][m._row]/m._A[i][i];

}

cout=0;i--)

//利用公式Ux=Y,求解得到x

{

for(j=m._row-1;j>=i+1;j--)

Y[i]

-=

m._X[j]*m._A[i][j];

m._X[i]=

Y[i]/m._A[i][i];

}

cout=1000)

{

coutmax)

max=temp;

}

if

(max<1e-6)

{

cout<<“迭代次数为:“<

版权所有:蓬勃范文网 2010-2024 未经授权禁止复制或建立镜像[蓬勃范文网]所有资源完全免费共享

Powered by 蓬勃范文网 © All Rights Reserved.。蜀ICP备20021444号