從圖的鄰接表表示轉換成鄰接矩陣表示的算法


加群獲取學習資料QQ群:901381280

 

分析:通過將鄰接表的邊映射到鄰接矩陣上為1,沒邊的則為0

#include<iostream>
using namespace std;
#define  MaxNum 20                 //圖的最大頂點數
#define MaxValue 65535			   //最大值
// 定義邊表結點
struct ArcNode
{
    int adjvex;                   // 鄰接點域
    ArcNode* next;                 //下一個鄰接點 
};
struct Graph
{
	struct  ArcNode* VertexNode[MaxNum];     //定義頂點表結點
	int VertextNum;                //頂點數量
	int EdgeNum;                   //邊的數量 
	int Edge[MaxNum][MaxNum];      //鄰接矩陣 
};
void outAdjacency(Graph GM){        //輸出鄰接表 
	
	for(int i=1;i<=GM.VertextNum;i++){//定義頂點表結點
	   
	    ArcNode* B = new ArcNode;
	    B= GM.VertexNode[i];
	    cout << B->adjvex;
		B = B->next; 
	    while(B!=nullptr){
	    	cout << "->"<<B->adjvex;
	    	B = B->next;	    	
		}
		cout << "->Null"<<endl;
	}
}
void adjacency_matrix(Graph GM){        //輸出鄰接矩陣 

	for(int i=1;i<=GM.VertextNum;i++){//定義頂點表結點
	    ArcNode* B = new ArcNode;
	    B= GM.VertexNode[i];
		B = B->next; 
	    while(B!=nullptr){
	    	GM.Edge[i][B->adjvex]=1;
	    	B = B->next;	    	
		}
	}
	for(int i=1;i<=GM.VertextNum;i++){    //打印鄰接矩陣 
		for(int j=1;j<=GM.VertextNum;j++){
			  cout << GM.Edge[i][j] << " ";
		}
		cout << endl;
	}
}
int main(){	
	Graph GM;                     //初始化圖
	cin>>GM.VertextNum;           //輸入頂點數量
	cin>>GM.EdgeNum;              //入邊的數量
	for(int i=1;i<=GM.VertextNum;i++){//定義頂點表結點
	    ArcNode* A = new ArcNode;
		A->adjvex=i;
		A->next=nullptr;
		GM.VertexNode[i]=A;
	}
	for(int i=1;i<=GM.EdgeNum;i++){
		int j,k;
		cin >>j >>k ;
		ArcNode* A = new ArcNode;
		A->adjvex=k;
		A->next=GM.VertexNode[j]->next;
		GM.VertexNode[j]->next = A;
	}
	for(int i=1;i<=GM.VertextNum;i++){    //初始化鄰接矩陣 為0; 
		for(int j=1;j<=GM.VertextNum;j++){
			  GM.Edge[i][j]=0; 
		}
	}
	cout << "輸出鄰接表"<<endl;	
	outAdjacency(GM);              //輸出鄰接表
	cout << "輸出鄰接矩陣"<<endl;
	adjacency_matrix(GM);         //輸出鄰接矩陣
	return 0;
}

 

輸入:

4 5
1 4
4 3
1 2
2 4
1 3

 

輸出結果:

 

歡迎關注公眾號:Python爬蟲數據分析挖掘,方便及時閱讀最新文章

                             回復【開源源碼】免費獲取更多開源項目源碼;

                 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM