1 / 18
文档名称:

邻接矩阵算法.doc

格式:doc   大小:28KB   页数:18页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

邻接矩阵算法.doc

上传人:1542605778 2022/7/4 文件大小:28 KB

下载得到文件列表

邻接矩阵算法.doc

相关文档

文档介绍

文档介绍:#include"邻接矩阵h"
//
图的邻接矩阵存储的初始化算法
void InitMatrix(adjmatrix GA,int k) 
{ 
int i,j; 
for(i=0;i<MaxVertexNum;i++) 
'('<<i<<','<<j<<')'<<GA[i][j]<<','; 
 
 
 
 
} 
 
 
 
 
else //
对有向有权图的处理
 
 
 
 
 
 
cout<<'<'<<i<<','<<j<<'>'<<GA[i][j]<<','; 
} 
cout<<'}'<<endl; 
} 
 
//
按图的邻接矩阵输出图的深度优先遍历序列
 
void dfsMatrix(adjmatrix GA,int i,int n,bool*visited) 
{ 
cout<<i<<' '; 
visited[i]=true; 
for(int j=0;j<n;j++) 
if(GA[i][j]!=0&&GA[i][j]!=MaxValue&&!visited[j])  
dfsMatrix(GA,j,n,visited); 
} 
//
按图的邻接矩阵输出图的广度优先遍历序列
void bfsMatrix(adjmatrix GA,int i,int n,bool*visited) 
{ 
const int MaxSize=30; 
int q[MaxSize]={0}; 
int front=0,rear=0; 
cout<<i<<' '; 
visited[i]=true; 
q[++rear]=i; 
while(front!=rear) 
{ 
front=(front+1)%MaxSize; 
int k=q[front]; 
for(int j=0;j<n;j++) 
{ 
if(GA[k][j]!=0&&GA[k][j]!=MaxValue&&!visited[j]) 
{ 
cout<<j<<' '; 
visited[j]=true; 
rear=(rear+1)%MaxSize; 
q[rear]=j;  
}  
} 
} 
} 
 
void main() 
{ 
 
int i,n,k1,k2; 
 
cout<<"
输入待处理图的定点数
:"; 
 
cin>>n; 
 
cout<<"
输入图的有无向和有无权选择
(0
为无,非
0
为有
):"; 
 
cin>>k1>>k2; 
 
bool* visited=new bool[n]; 
 
adjmatrix ga; 
 
InitMatrix(ga,k2); 
 
cout<<"
输入图的边集
:"; 
 
char*a=new char[100]; 
 
cin>>a; 
 
CreateMatrix(ga,n,a,k1,k2); 
 
cout<<"
按图的邻接矩阵得到的深度优先遍历序列
:"<<endl; 
 
for(i=0;i<n;i++) 
 
 
visited[i]=false; 
 
dfsMatrix(ga,0,n,visited); 
 
cout<<endl; 
 
cout<<"
按图的邻接矩阵得到的广度优先遍历序列
:"<< 
endl; 
 
 
 
 
for(i=0;i<n;i++) 
 
visited[i]=false; 
 
 
 
 
bfsMatrix(ga,0,n,visited); 
 
cout<<endl;  
cout<<"
度数为:
"<<Degree(ga,n)<<endl;; 
 PrintMatrix(ga,n,k1,k2); 
} 
} 
 
void main() 
{ 
 
int i,n,k1,k2; 
 
cout<<"
输入待处理图的定点数
:"; 
 
cin>>n; 
 
cout<<"
输入图的有无向和有无权选择
(0
为无,非
0
为有
):"; 
 
cin>>k1>>k2; 
 
bool* visited=new bool[n]; 
 
adjmatrix ga; 
 
InitMatrix(ga,k2); 
 
cout<<"
输入图的边集
:"; 
 
char*a=new char[100]; 
 
cin>>a; 
 
CreateMatrix(ga,n