Advertisement
Guest User

Untitled

a guest
Jun 30th, 2017
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
BibTeX 5.10 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4.  
  5. // Lista DESAFIO
  6.  
  7. // Exercicio 1
  8. //estrutura para armazenamento de 1 nó
  9. typedef struct str_Info {
  10.        int numero;
  11. } Tipo_Info;
  12.  
  13. typedef struct str_Noh {
  14.        Tipo_Info *info;
  15.        struct str_Noh *prox;
  16. } Tipo_Noh;
  17.  
  18. //alocacao do nó
  19. Tipo_Noh alocacao() {            
  20.        Tipo_Noh *ptLista;
  21.        ptLista = (Tipo_Noh*)malloc(sizeof(Tipo_Noh));   //alocacao dinamica de 1 ponteiros inteiros
  22.        ptLista->prox = NULL;
  23.        return *ptLista;
  24. }
  25.  
  26. //desalocacao do nó
  27. void desalocacao(Tipo_Noh *ptLista) {
  28.        free(ptLista);
  29. }
  30.  
  31. //inclusao de um nó no inicio da lista
  32. void inclusao_no_inicio(Tipo_Noh *ptLista, Tipo_Noh *pont) {
  33.        pont->prox = ptLista;
  34.        ptLista= pont;
  35. }
  36.  
  37. //inclusao de um nó no fim da lista
  38. void inclusao_no_fim(Tipo_Noh *ptLista, Tipo_Noh *pont) {
  39.        Tipo_Noh *ptr;
  40.        ptr = ptLista;
  41.        while (ptr->prox != NULL) {
  42.              ptr = ptr->prox;
  43.        }
  44.        ptr->prox = pont;
  45.        pont->prox = NULL;
  46.        ptr = NULL;
  47. }
  48.  
  49. //inclusao de um nó em uma lista ordenada
  50. void inclusao_ordenada(Tipo_Noh *ptLista, Tipo_Noh *pont) {
  51.        Tipo_Noh *ptr, *ant;
  52.        pont = NULL;
  53.        ant = ptLista;
  54.        ptr = ptLista->prox;
  55.        while (ptr != NULL) {
  56.              if (ptr->info->numero < pont->info->numero) {
  57.                   ant = ptr;
  58.                   ptr = ptr->prox;
  59.              }
  60.              else {
  61.                   pont->prox = ptr;
  62.                   ant->prox = pont;
  63.                   ptr = NULL;
  64.              }
  65.        }
  66. }
  67.  
  68. //busca de um nó na lista desordenada
  69. void busca_desordenada(Tipo_Noh *ptLista, Tipo_Noh *pont) {
  70.     Tipo_Noh *ptr;
  71.     pont = NULL;
  72.     ptr = ptLista->prox;
  73.     while (ptr != NULL) {
  74.           if (ptr->info->numero != pont->info->numero) {
  75.                  ptr = ptr->prox;
  76.           }
  77.           else {
  78.                  ptr = NULL;
  79.                  printf ("O noh procurado nao encontra-se na lista");
  80.           }
  81.     }
  82. }
  83.      
  84. //busca de um nó na lista ordenada
  85. void busca_ordenada(Tipo_Noh *ptLista, Tipo_Noh *pont) {
  86.     Tipo_Noh *ptr;
  87.     pont = NULL;
  88.     ptr = ptLista->prox;        
  89.     while (ptr != NULL) {
  90.           if (ptr->info->numero < pont->info->numero) {
  91.                  ptr = ptr->prox;    
  92.           }
  93.           else if (ptr->info->numero == pont->info->numero) {
  94.                  pont = ptr;        
  95.                  ptr = NULL;
  96.                  printf ("Noh encontrado");
  97.           }
  98.           else {          
  99.                  ptr = NULL;        
  100.                  printf ("O noh procurado nao encontra-se na lista");
  101.           }
  102.     }
  103. }
  104.  
  105. //impressao do conteudo de um nó
  106. void impressao_um_no(Tipo_Noh *ptLista, Tipo_Noh *pont) {
  107.      Tipo_Noh *ptr;
  108.      ptr = ptLista->prox;
  109.      pont = NULL;
  110.      while (ptr != NULL) {
  111.           if (ptr->info->numero != pont->info->numero) {
  112.                   ptr = ptr->prox;
  113.           }
  114.           else {
  115.                   printf ("%d", pont->info->numero);
  116.                   ptr = NULL;
  117.           }
  118. }
  119.  
  120. //impressao do conteudo de todos os nos da lista
  121. void impressao_todos_nos(Tipo_Noh *ptLista) {
  122.     Tipo_Noh *ptr;
  123.     ptr = ptLista->prox;
  124.     while (ptr != NULL) {
  125.           ptr = ptr->prox;
  126.           printf ("%d", ptr->info->numero);
  127.     }
  128. }
  129.  
  130. //impressao em arquivo binario de todos os nos da lista
  131. void impressao_arqbinario(Tipo_Noh *ptLista) {
  132.     Tipo_Noh *ptr;
  133.     ptr = ptLista->prox;
  134.     FILE *arquivo;
  135.     arquivo = fopen("ARQUIVO.bin", "wb") {
  136.             if (arquivo == NULL) {
  137.                 printf("Nao eh possivel abrir o arquivo!");
  138.                 exit(1);
  139.             }
  140.             while (ptr != NULL) {
  141.                 fwrite(ptr->info->numero, sizeof(Tipo_Noh), 1, arquivo);
  142.                 ptr = ptr->prox;
  143.           }
  144.     fclose(arquivo);
  145.     }
  146. }
  147.  
  148. //leitura de arquivo binario de todos os nos da lista
  149. void leitura_arqbinario(Tipo_Noh *ptLista) {
  150.     Tipo_Noh *ptr;
  151.     FILE *arquivo;
  152.     ptr = ptLista->prox;
  153.     arquivo = fopen("ARQUIVO.BIN", "rb") {
  154.           if (arquivo == NULL) {
  155.                 printf("Nao eh possivel abrir o arquivo!");
  156.                 exit(1);
  157.           }
  158.           while (ptr != NULL) {
  159.                 fread(ptr, sizeof(Tipo_Noh), 1, arquivo);
  160.                 ptr = ptr->prox;
  161.           }
  162.     fclose(arquivo);
  163.     }
  164. }
  165.  
  166. //remocao de um no da lista
  167. void remocao_desordenada(Tipo_Noh *ptLista, Tipo_Noh *pont) {
  168.     Tipo_Noh *ptr, *ant;    
  169.     ptr = ptLista->prox;
  170.     pont = NULL;
  171.     ant = ptLista;
  172.     while (ptr != NULL) {
  173.           if(ptr->info->numero != pont->info->numero) {
  174.                 ant = ptr;
  175.                 ptr = ptr->prox;
  176.           }
  177.           else {
  178.                 pont = ptr;
  179.                 ant->prox = pont->prox;
  180.                 ptr = NULL;
  181.           }
  182.     }
  183. }
  184.  
  185. //remocao completa da lista
  186. void remocao_lista(Tipo_Noh *ptLista) {  
  187.      if (ptLista->prox !=NULL) {
  188.        remocao_lista(ptLista->prox);
  189.     free(ptLista);    
  190. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement