邻接矩阵
#include <iostream>
using namespace std;
int main ( ) {
const int MAX_N = 5 ;
int Graph[ MAX_N] [ MAX_N] = { 0 } ;
Graph[ 0 ] [ 2 ] = 1 ;
Graph[ 0 ] [ 4 ] = 1 ;
Graph[ 1 ] [ 0 ] = 1 ;
Graph[ 1 ] [ 2 ] = 1 ;
Graph[ 2 ] [ 3 ] = 1 ;
Graph[ 3 ] [ 4 ] = 1 ;
Graph[ 4 ] [ 3 ] = 1 ;
printf ( "Graph:\n" ) ;
for ( int i = 0 ; i < MAX_N; i++ ) {
for ( int j = 0 ; j < MAX_N; j++ ) {
printf ( "%d " , Graph[ i] [ j] ) ;
}
printf ( "\n" ) ;
}
return 0 ;
}
0 0 1 0 1
1 0 1 0 0
0 0 0 1 0
0 0 0 0 1
0 0 0 1 0
邻接表
#include <iostream>
#include <vector>
using namespace std;
struct GraphNode {
int label;
vector< GraphNode * > neighbors;
GraphNode ( int x) : label ( x) { } ;
} ;
int main ( ) {
const int MAX_N = 5 ;
GraphNode * Graph[ MAX_N] ;
for ( int i = 0 ; i < MAX_N; i++ ) {
Graph[ i] = new GraphNode ( i) ;
}
Graph[ 0 ] - > neighbors. push_back ( Graph[ 2 ] ) ;
Graph[ 0 ] - > neighbors. push_back ( Graph[ 4 ] ) ;
Graph[ 1 ] - > neighbors. push_back ( Graph[ 0 ] ) ;
Graph[ 1 ] - > neighbors. push_back ( Graph[ 2 ] ) ;
Graph[ 2 ] - > neighbors. push_back ( Graph[ 3 ] ) ;
Graph[ 3 ] - > neighbors. push_back ( Graph[ 4 ] ) ;
Graph[ 4 ] - > neighbors. push_back ( Graph[ 3 ] ) ;
cout << "Graph:" << endl;
for ( int i = 0 ; i < MAX_N; i++ ) {
cout << "Label:" ;
for ( int j = 0 ; j < Graph[ i] - > neighbors. size ( ) ; j++ ) {
cout << Graph[ i] - > neighbors[ j] - > label << " " ;
}
cout << endl;
}
for ( int i = 0 ; i < MAX_N; i++ ) {
delete Graph[ i] ;
}
return 0 ;
}
Graph:
Label: 2 4
Label: 0 2
Label: 3
Label: 4
Label: 3