devdbi

Grafo (Incompleto)

Feb 17th, 2017
276
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.65 KB | None | 0 0
  1. /**
  2. *@since 11/02/2017
  3. *@version 0.1.0
  4. */
  5. import java.util.ArrayList;
  6.  
  7. class Graph {
  8.     private int     nVertex;
  9.     private boolean isDirected;    
  10.     private ArrayList<Vertex> allVertex = new ArrayList<Vertex>();
  11.  
  12.     protected Graph (boolean isDirected, int nVertex) {
  13.         this.isDirected = isDirected;
  14.         this.nVertex = nVertex;
  15.         for (int x = 0; x < nVertex; ++x) {
  16.             this.allVertex.add(new Vertex());
  17.         }
  18.     }
  19.  
  20.     /**
  21.     *Chama o me'todo na classe Ve'rtice para criar uma nova aresta
  22.     *@param int predecessor: I'ndice do ve'rtice de antecessor
  23.     *@param int successor: I'ndice do ve'rtice sucessor
  24.     */
  25.     protected void addEdge (int index, int successor) {
  26.         if (index < this.nVertex && successor < this.nVertex) {
  27.             // Adciona a aresta em um sentido apenas (Ex: de A para B)
  28.             if (this.isDirected) {
  29.                 // Cria uma aresta indo do ve'rtice "index" para seu sucessor
  30.                 this.allVertex.get(index).addEdge(this.allVertex.get(index),
  31.                                                   this.allVertex.get(successor));
  32.             }
  33.             // Adciona a aresta nos dois sentidos (Ex: De A para B e de B para A)
  34.             else {
  35.                 this.allVertex.get(index).addEdge(this.allVertex.get(index),
  36.                                                   this.allVertex.get(successor));
  37.                 this.allVertex.get(successor).addEdge(this.allVertex.get(successor),
  38.                                                   this.allVertex.get(index));
  39.             }
  40.         }
  41.     }
  42.  
  43.     protected void printAllVertex () {
  44.         // Mostra na sai'da padrão, todos os ve'rtices presentes no grafo
  45.         // Por enquanto so' mostra o endereco na ma'quina virtual. MELHORAR ISSO!
  46.         for (int i = 0; i < allVertex.size(); ++i) {
  47.             System.out.println(allVertex.get(i));
  48.         }
  49.     }
  50.  
  51.     protected void printEdges(int index){
  52.         // Chama o me'todo para imprimir todas as arestas
  53.         allVertex.get(index).printEdges();
  54.     }
  55.  
  56.     protected void printVertex(int index, int successor) {
  57.         for (int i = 0; i < allVertex.get(index).edges.size(); i++) {
  58.             System.out.println(allVertex.get(index).edges.get(i).successor == allVertex.get(successor));
  59.         }
  60.     }
  61.  
  62.     protected boolean search (int n) {
  63.         boolean find = false;
  64.         return find;
  65.     }
  66.  
  67. }
  68.  
  69. class Vertex {   
  70.     protected   ArrayList <Edge> edges = new ArrayList<Edge>();
  71.  
  72.     protected Vertex () {
  73.  
  74.     }
  75.  
  76.     /**
  77.     *Adciona uma aresta no ve'rtice
  78.     *@param Vertex predecessor: Ve'rtice de origem
  79.     *@param Vertex successor: Ve'rtice de destino
  80.     */
  81.     protected void addEdge (Vertex predecessor, Vertex successor) {
  82.         boolean notOk = false;
  83.         for (int i = 0; i < edges.size(); i++) {
  84.             notOk = edges.get(i).successor == successor;
  85.         }
  86.         if (!notOk) {
  87.             edges.add(new Edge (successor));
  88.         }
  89.     }
  90.  
  91.     /**
  92.     *Adciona uma aresta no ve'rtice
  93.     *@param Vertex predecessor: Ve'rtice de origem
  94.     *@param Vertex successor: Ve'rtice de destino
  95.     *@param int weight: Peso da aresta
  96.     */
  97.     protected void addEdge (Vertex predecessor, Vertex successor, int weight) {
  98.        
  99.     }
  100.  
  101.     /**
  102.     *Imprime as arestas existentes no ve'rtice para outro ve'rtices
  103.     */
  104.     protected void printEdges() {
  105.         for (int i = 0; i < edges.size(); ++i) {
  106.             System.out.println(edges.get(i));
  107.         }
  108.     }
  109. }
  110.  
  111. class Edge {
  112.     protected int weight;
  113.     protected Vertex successor;
  114.  
  115.     /**
  116.     *Construtor da classe Edge que cria um ponteiro do ve'rtice atual para o ve'rtice sucessor
  117.     *@param Vertex successor: Ve'rtice sucessor
  118.     */
  119.     protected Edge (Vertex successor) {
  120.         this.successor = successor;
  121.         this.weight = 0;
  122.     }
  123.  
  124.     /**
  125.     *Construtor da classe edge que cria um ponteiro do ve'rtice atual para um sucessor indicando o peso da aresta
  126.     *@param Vertex successor: Ve'rtice sucessor
  127.     *@param int weight: Peso da aresta
  128.     */
  129.     protected Edge (Vertex successor, int weight) {
  130.         this.successor = successor;
  131.         this.weight = weight;
  132.     }
  133. }
Advertisement
Add Comment
Please, Sign In to add comment