Advertisement
Guest User

Untitled

a guest
Jun 24th, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.11 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "TRede.h"
  4.  
  5. typedef struct Arco * pTArco; //ponteiro de TArco
  6. typedef struct No * pTNo; //ponteiro de TNo
  7. typedef struct Rede * pTRede; //ponteiro de TRede
  8.  
  9. typedef struct Arco{
  10.     int custo;
  11.     //pTNo destino;
  12.     int num_no_destino;
  13. }TArco;
  14.  
  15. typedef struct No{
  16.     int numero;
  17.     int num_arcos;
  18.     pTArco arcos;
  19. }TNo;
  20.  
  21. typedef struct Rede{
  22.     int tamanho;
  23.     int preenchido;
  24.     pTNo nos;
  25. }TRede;
  26.  
  27.  
  28.  
  29.  
  30. int Rede_EhVazia(pTRede rede) {
  31.     return rede->preenchido == 0;
  32. }
  33.  
  34. int Rede_Preenchida(pTRede rede) {
  35.     return rede->preenchido == rede->tamanho;
  36. }
  37.  
  38. pTRede Rede_Cria(int tamanho) {
  39.     TRede rede;
  40.     if (tamanho > 0) {
  41.         rede.tamanho = tamanho;
  42.         rede.preenchido = 0;
  43.         rede.nos = (pTNo) malloc (sizeof(TNo) * tamanho);
  44.  
  45.         printf("Rede criada: possui tamanho %d e %d nós preenchidos.\n", rede.tamanho, rede.preenchido);
  46.         return &rede;
  47.     } else {
  48.         return NULL;
  49.     }
  50. }
  51.  
  52. int Rede_ExisteNo(pTRede pRede, int numero) {
  53.     if (!Rede_EhVazia(pRede)) {
  54.         int i;
  55.         for (i = 0; i < pRede->preenchido; i++) {
  56.             if (pRede->nos[i].numero == numero) {
  57.                 return 1;
  58.             }
  59.         }
  60.     }
  61.     return 0;
  62. }
  63.  
  64.  
  65. int Rede_InsereNo(pTRede pRede, pTNo pNo) {
  66.     if (!Rede_Preenchida(pRede)) {
  67.         (*pRede).nos[pRede->preenchido] = *pNo;
  68.         (*pRede).preenchido ++;
  69.         printf("Inseriu.\n");
  70.     }
  71.     return 0;
  72. }
  73.  
  74. pTNo Rede_BuscaNo(pTRede pRede, int numero) {
  75.     if (!Rede_EhVazia(pRede)) {
  76.         int i;
  77.         for (i = 0; i < pRede->preenchido; i++) {
  78.             if (pRede->nos[i].numero == numero) {
  79.                 return &pRede->nos[i];
  80.             }
  81.         }
  82.     }
  83.     return NULL;
  84. }
  85.  
  86. void Rede_Imprime(pTRede pRede) {
  87.     int i;
  88.     printf("(%d)", (*pRede).preenchido);
  89.     for (i=0; i<5; i++) {
  90.         printf("-%d", i);
  91.         //printf("Nó: %d - ", pRede->nos[i].numero);
  92.     }
  93. }
  94.  
  95. pTNo No_Cria(int numero, int num_arcos) {
  96.     TNo no;
  97.     no.num_arcos = num_arcos;
  98.     no.numero = numero;
  99.     no.arcos = (pTArco) malloc (sizeof(TArco) * num_arcos);
  100.     return &no;
  101. }
  102.  
  103. int main(int argc,char *argv[]) {
  104.     TRede * rede;
  105.     rede = Rede_Cria(7);
  106.     Rede_InsereNo(rede, No_Cria(1, 2));
  107.     printf("Possui tamanho %d e %d nós preenchidos.\n", rede->tamanho, rede->preenchido);
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement