- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2012《数据结》上机实验报告
西华数学与计算机学院上机实践报告
课程:级::名称: 上机实践日期:2012-12-4
上机实践编号:
一、目的
二、三、环境
四
第二题源代码:2.cpp
#includeiostream.h
#includeconio.h
#include 3.h
const int MaxVertices=100;
typedef int VerT;
typedef int DistT;
struct Edge{
int dest;
DistT weight;
Edge *next;
};
struct item{
VerT data;
Edge *adj;
};
class AdjTWGraph
{ private:
item Vertices[MaxVertices]; //表头向量
int numE; //当前的边数
int numV; //当前的顶点数
public:
AdjTWGraph(); //构造函数
~AdjTWGraph(); //析构函数
void CreatG(int n,int e);//建立一个图的邻接表
void DepthF()
{
int vi,visit[MaxVertices];
for(int i=0;iMaxVertices;i++)visit[i]=0;
cout请输入顶点viendl;
cinvi;
Depth(vi,visit);
}
void BoradF(){
int v0,visit[MaxVertices];
for(int i=0;iMaxVertices;i++)visit[i]=0;
cout\n 请输入遍历起始顶点号:;
cinv0;
cout\n广度优先遍历:;
Borad(v0,visit);
cout\n广度优先遍历结果。;
}
void PrintOut();
private:
void Borad(int v,int visited[]);//广度优先遍历
void Depth(int v,int visited[]);//深度优先遍历
};
AdjTWGraph::AdjTWGraph()
{
for(int i=0;iMaxVertices;i++)
{
Vertices[i].data=0;
Vertices[i].adj=NULL;
}
numV=0;
numE=0;
}
AdjTWGraph::~AdjTWGraph()
{
for(int i=0;inumV;i++)
{
Edge *p=Vertices[i].adj,*q;
while(p!=NULL){
q=p-next;
delete p;p=q;
}
Vertices[i].adj=NULL;
}
}
void AdjTWGraph::CreatG(int n,int e)
{
int vi,vj;
DistT w;
numE=e;
numV=n;
cout\n输入顶点信息:endl;
for(int i=0;inumV;i++)
{
cout\ni+1:;
cinVertices[i].data;
}
for(int j=0;jnumE;j++)
{
cout\n 输入边的信息(顶点号vi 顶点号vj 边的权值 w):;
cinvivjw;
if(vi1||vinumV||vj1||vjnumV) cout\n v1或v2越界出错!endl;
Edge *q=new Edge;
q-dest=vj-1;
q-weight=w;
q-next=NULL;
if(Vertices[vi-1].adj==NULL)Vertices[vi-1].adj=q;
else{
Edge *curr=Vertices[vi-1].adj,*pre=NULL;
while(curr!=NULLcurr-destvj-1)
{
pre=curr;
curr=curr-next;
}
if(pre==NULL)
{
q-next=Vertices[vi-1].adj;
V
文档评论(0)