Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- *@author <[email protected]>
- *@since 11/02/2017
- *@version 0.1.0
- */
- import java.util.ArrayList;
- class Graph {
- private int nVertex;
- private boolean isDirected;
- private ArrayList<Vertex> allVertex = new ArrayList<Vertex>();
- protected Graph (boolean isDirected, int nVertex) {
- this.isDirected = isDirected;
- this.nVertex = nVertex;
- for (int x = 0; x < nVertex; ++x) {
- this.allVertex.add(new Vertex());
- }
- }
- /**
- *Chama o me'todo na classe Ve'rtice para criar uma nova aresta
- *@param int predecessor: I'ndice do ve'rtice de antecessor
- *@param int successor: I'ndice do ve'rtice sucessor
- */
- protected void addEdge (int index, int successor) {
- if (index < this.nVertex && successor < this.nVertex) {
- // Adciona a aresta em um sentido apenas (Ex: de A para B)
- if (this.isDirected) {
- // Cria uma aresta indo do ve'rtice "index" para seu sucessor
- this.allVertex.get(index).addEdge(this.allVertex.get(index),
- this.allVertex.get(successor));
- }
- // Adciona a aresta nos dois sentidos (Ex: De A para B e de B para A)
- else {
- this.allVertex.get(index).addEdge(this.allVertex.get(index),
- this.allVertex.get(successor));
- this.allVertex.get(successor).addEdge(this.allVertex.get(successor),
- this.allVertex.get(index));
- }
- }
- }
- protected void printAllVertex () {
- // Mostra na sai'da padrão, todos os ve'rtices presentes no grafo
- // Por enquanto so' mostra o endereco na ma'quina virtual. MELHORAR ISSO!
- for (int i = 0; i < allVertex.size(); ++i) {
- System.out.println(allVertex.get(i));
- }
- }
- protected void printEdges(int index){
- // Chama o me'todo para imprimir todas as arestas
- allVertex.get(index).printEdges();
- }
- protected void printVertex(int index, int successor) {
- for (int i = 0; i < allVertex.get(index).edges.size(); i++) {
- System.out.println(allVertex.get(index).edges.get(i).successor == allVertex.get(successor));
- }
- }
- protected boolean search (int n) {
- boolean find = false;
- return find;
- }
- }
- class Vertex {
- protected ArrayList <Edge> edges = new ArrayList<Edge>();
- protected Vertex () {
- }
- /**
- *Adciona uma aresta no ve'rtice
- *@param Vertex predecessor: Ve'rtice de origem
- *@param Vertex successor: Ve'rtice de destino
- */
- protected void addEdge (Vertex predecessor, Vertex successor) {
- boolean notOk = false;
- for (int i = 0; i < edges.size(); i++) {
- notOk = edges.get(i).successor == successor;
- }
- if (!notOk) {
- edges.add(new Edge (successor));
- }
- }
- /**
- *Adciona uma aresta no ve'rtice
- *@param Vertex predecessor: Ve'rtice de origem
- *@param Vertex successor: Ve'rtice de destino
- *@param int weight: Peso da aresta
- */
- protected void addEdge (Vertex predecessor, Vertex successor, int weight) {
- }
- /**
- *Imprime as arestas existentes no ve'rtice para outro ve'rtices
- */
- protected void printEdges() {
- for (int i = 0; i < edges.size(); ++i) {
- System.out.println(edges.get(i));
- }
- }
- }
- class Edge {
- protected int weight;
- protected Vertex successor;
- /**
- *Construtor da classe Edge que cria um ponteiro do ve'rtice atual para o ve'rtice sucessor
- *@param Vertex successor: Ve'rtice sucessor
- */
- protected Edge (Vertex successor) {
- this.successor = successor;
- this.weight = 0;
- }
- /**
- *Construtor da classe edge que cria um ponteiro do ve'rtice atual para um sucessor indicando o peso da aresta
- *@param Vertex successor: Ve'rtice sucessor
- *@param int weight: Peso da aresta
- */
- protected Edge (Vertex successor, int weight) {
- this.successor = successor;
- this.weight = weight;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment