实验 6:图的实验

邻接矩阵

#include<iostream.h>

const intMaxSize=10; 

intvisited[MaxSize]={0};

class MGraph

{

public:

MGraph(chara[],int n,int e);

~MGraph(){} 

voidDFSTraverse(int v);

voidBFSTraverse(int v);

void Print(char a[],int v,int length);

private:

char vertex[MaxSize];  

intarc[MaxSize][MaxSize]; 

intvertexNum,arcNum;

};

MGraph::MGraph(chara[],int n,int e)

{

int i,j,k;

vertexNum=n;

arcNum=e;

for(i=0;i<vertexNum;i++)

vertex[i]=a[i];

for(i=0;i<vertexNum;i++)

for(j=0;j<vertexNum;j++)

arc[i][j]=0;

for(k=0;k<arcNum;k++)

{

cout<<"输入边的两个顶点序号:"<<endl;

cin>>i>>j;

arc[i][j]=1;arc[j][i]=1;

}

}

voidMGraph::DFSTraverse(int v)

{

cout<<vertex[v];

visited[v]=1;

for(intj=0;j<vertexNum;j++)

if(arc[v][j]==1&&visited[j]==0)

DFSTraverse(j);

}

voidMGraph::BFSTraverse(int v)

{

int Q[MaxSize];

intfront=-1,rear=-1; 

cout<<vertex[v];

visited[v]=1;

Q[++rear]=v;

while(front!=rear)

{

v=Q[++front]; 

for(intj=0;j<vertexNum;j++)

if(arc[v][j]==1&&visited[j]==0)

{

cout<<vertex[j];

visited[j]=1;

Q[++rear]=j;

}

}

}

voidMGraph::Print(char a[],int v,int length)

{

for(inti=0;i<length;i++)

{

cout<<a[i]<<"顶点的邻接点为:";

for(intj=0;j<length;j++)

{

if(arc[i][j]==1)

cout<<a[j];

}

cout<<endl;

}

}

int main()

{

charch[]={'A','B','C','D','E','F'};  

MGraphMG(ch,6,7);   

for(inti=0;i<MaxSize;i++) 

visited[i]=0;

cout<<"深度优先遍历:";

MG.DFSTraverse(0);

cout<<endl;

for(i=0;i<MaxSize;i++)

visited[i]=0;

cout<<"广度优先遍历:";   

MG.BFSTraverse(0);

cout<<endl;

MG.Print(ch,0,6); 

cout<<endl;

return 0;

}

 

 

 

邻接表

 

#include<iostream.h>

const int MaxSize=10; 

int visited[MaxSize]={0};  

struct ArcNode 

{

       intadjvex;     

       ArcNode*next;

};

struct VertexNode     

{

       charvertex;

       ArcNode*firstedge;

};

class ALGraph

{

public:

       ALGraph(chara[],int n,int e); 

       ~ALGraph();   

       voidDFSTraverse(int v); 

       voidBFSTraverse(int v);      

       voidPrint(char a [],int length);

private:

       VertexNodeadjlist[MaxSize];  

       intvertexNum,arcNum;           

 

};

ALGraph::ALGraph(char a[],int n,int e)

{

       ArcNode*s;

       inti,j,k;

       vertexNum=n;

       arcNum=e;

       for(i=0;i<vertexNum;i++)    

       {

              adjlist[i].vertex=a[i];

              adjlist[i].firstedge=NULL;

       }

       for(k=0;k<arcNum;k++)  

       {

              cout<<"请输入边的两个顶点的序号:"<<endl;

              cin>>i>>j;       

              s=newArcNode;  

              s->adjvex=j;

              s->next=adjlist[i].firstedge;     

              adjlist[i].firstedge=s;

       }

}

ALGraph::~ALGraph()

{

       ArcNode*p=NULL;

       for(inti=0;i<vertexNum;i++)

       {

              p=adjlist[i].firstedge;

              while(p!=NULL)        

              {

                     adjlist[i].firstedge=p->next;

                     deletep;   

                     p=adjlist[i].firstedge;

              }

       }

}

void ALGraph::DFSTraverse(int v)   

{

       ArcNode*p=NULL;

       intj;

       cout<<adjlist[v].vertex;

       visited[v]=1;

       p=adjlist[v].firstedge;  

       while(p!=NULL)      

       {

              j=p->adjvex;

              if(visited[j]==0)DFSTraverse(j);

              p=p->next;

       }

}

void ALGraph::BFSTraverse(int v)

{

       intQ[MaxSize];  

       intfront=-1,rear=-1;  

       ArcNode*p=NULL;

       cout<<adjlist[v].vertex;

       visited[v]=1;          

       Q[++rear]=v;

       while(front!=rear)         

       {

              v=Q[++front];

              p=adjlist[v].firstedge;

              while(p!=NULL)

              {

                     intj=p->adjvex;      

                     if(visited[j]==0)

                     {

                            cout<<adjlist[j].vertex;

                            visited[j]=1;

                            Q[++rear]=j;

                     }

                     p=p->next;

              }

       }

}

void ALGraph::Print(char a[],intlength)    

{

       for(inti=0;i<length;i++)

       {

              cout<<a[i]<<"->";

              if(adjlist[i].firstedge!=NULL)   

                     cout<<a[adjlist[i].firstedge->adjvex];  

              elsebreak;

              cout<<endl;

       }

}

int main()

{

       charch[]={'A','B','C','D','E'}; 

       ALGraphALG(ch,5,7);      

       for(inti=0;i<MaxSize;i++) 

              visited[i]=0;

       cout<<"深度优先遍历序列是:";

       ALG.DFSTraverse(0);

       cout<<endl;

       for(i=0;i<MaxSize;i++)

              visited[i]=0;

       cout<<"广度优先遍历序列是:";

       ALG.BFSTraverse(0); 

       cout<<endl;

       ALG.Print(ch,5);

       cout<<endl;

       return0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
的基本操作;(2)通过实验验证中心极限定理。 实验原理: 中心极限定理是统计学中的一个重要定理,它指出,当独立随机变量的和或平均值的样本容量足够大时,其分布会趋近于正态分布。即使总体分布不是正态分布,样本容量足够大时,样本均值的分布也会趋近于正态分布。这个定理在实际应用中非常重要,因为它可以用来进行统计推断,如置信区间的计算、假设检验等。 实验步骤: 1. 打开Excel软件,创建一个新的工作表。 2. 在第一列中输入随机数,可以使用Excel的随机数函数生成,也可以手动输入。 3. 在第二列中输入样本容量,即每次抽样的样本数量。 4. 在第三列中输入重复抽样的次数。 5. 在第四列中输入样本均值的计算公式,如“=AVERAGE(A1:A10)”表示计算A1到A10的样本均值。 6. 复制第四列的公式,将其应用到整个表格中。 7. 在第五列中计算每次重复抽样的样本均值的平均值和标准差。 8. 绘制样本均值的频率分布。 9. 将结果与正态分布进行比较。 实验结果: 我们使用Excel生成了1000个随机数,假设总体均值为50,方差为10。 我们进行了100次重复抽样,每次抽样100个样本。 计算样本均值的均值为50.017,标准差为0.999。 绘制样本均值的频率分布,发现其分布形状逐渐接近于正态分布。 结论: 通过本次实验,我们验证了中心极限定理,即当随机变量数量足够大时,其分布会趋近于正态分布。这个定理在实际应用中非常重要,因为可以用来对样本均值等参数进行估计,并进行统计推断。同时,我们也学习和掌握了Excel的基本操作,为今后的数据分析和处理打下了基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值