测绘软件实习报告 本文关键词:测绘,实习报告,软件
测绘软件实习报告 本文简介:中国矿业大学测绘软件设计与实现实验报告学号:姓名:班级:指导教师:王永波实验一二叉树的构建及其遍历算法的实现实验目的:完成二叉树的构建以及二叉树的遍历等,加深对树以及二叉树的遍历相关知识的理解。实验内容: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<<“迭代次数为:“<