La figura vértices hay una colección de no vacío y finito borde entre vértices, generalmente expresado como: G (V, E), en la que, G representa un gráfico, V es el conjunto de vértices de G, E es G en la figura. en el conjunto de aristas.
La figura sub grafo no dirigido con un grafo dirigido según la figura longitud lateral de dividido y no ponderada gráfico gráfico ponderado.
estructura matriz de adyacencia y mostrando:
#include<stdio.h>
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;
}
Resultados de operación como sigue:
Graph:
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
tabla de adyacencia que representa la estructura:
#include <stdio.h>
#include<vector>
struct GraphNode
{
int label;
std::vector<GraphNode*> neighbors;
GraphNode(int x) : label(x) {};
};
int main()
{
const int MAX_N = 5;
GraphNode* Graph[5] ;
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]);
printf("Graph:\n");
for (int i = 0; i < MAX_N; i++)
{
printf("Label(%d):",i);
for (int j = 0; j <Graph[i]->neighbors.size(); j++)
{
printf("[%d]",Graph[i]->neighbors[j]->label);
}
printf("\n");
}
for (int i = 0; i < MAX_N; i++)
{
delete Graph[i];
}
return 0;
}
Resultados de operación como sigue:
Graph:
Label(0):[2][4]
Label(1):[0][2]
Label(2):[3]
Label(3):[4]
Label(4):[3]