Advertisement
sconetto

Prova - Pares de Meia

May 19th, 2016
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.99 KB | None | 0 0
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4.  
  5. typedef struct _meia meia;
  6.  
  7. struct _meia {
  8.   char tipo_meia[7];
  9.   meia *prox;
  10. };
  11.  
  12. meia* cria_lista(void) {
  13.   return NULL;
  14. }
  15.  
  16. meia* insere_meia(meia* lista, char *tipo) {
  17.   meia* novo = (meia*) malloc(sizeof(meia));
  18.   strcpy(novo->tipo_meia, tipo);
  19.   novo->prox = lista;
  20.   return novo;
  21. }
  22.  
  23. meia* retira_meia(meia* lista, char *tipo) {
  24.     meia *p, *aux, *ant, *post;
  25.     aux = lista;
  26.     while (ant != NULL && (strcmp(ant->prox->tipo_meia, tipo) != 0)) {
  27.       ant = ant->prox;
  28.     }
  29.     for (p = lista; p != NULL; p = p->prox) {
  30.         if ((strcmp(p->tipo_meia, tipo)) == 0) {
  31.           ant->prox = p->prox;
  32.         }
  33.     }
  34.     return ant;
  35. }
  36.  
  37. int procura_meia(meia* lista, char tipo[7]) {
  38.     meia* p;
  39.     for (p = lista; p != NULL; p = p->prox) {
  40.         if ((strcmp(p->tipo_meia, tipo)) == 0) {
  41.             return 1;
  42.         }
  43.     }
  44.     return 0;
  45. }
  46.  
  47. int lista_vazia (meia* lista) {
  48.     return (lista == NULL);
  49. }
  50.  
  51. int quantidade_meia(meia* lista) {
  52.   int contador = 0;
  53.   meia* p;
  54.   if(lista_vazia(lista)) {
  55.     return 0;
  56.   }
  57.   else{
  58.     for (p = lista; p != NULL; p = p->prox) {
  59.       contador++;
  60.     }
  61.     return contador;
  62.   }
  63. }
  64.  
  65. void lista_imprime(meia* lista) {
  66.     meia* p;
  67.     for (p = lista; p != NULL; p = p->prox) {
  68.         printf("meia = %s\n", p->tipo_meia);
  69.     }
  70. }
  71.  
  72. int main() {
  73.   int N, i, aux;
  74.   int meia_sem_par;
  75.   meia* lista;
  76.   char string[7];
  77.   scanf("%d", &N);
  78.   lista = cria_lista();
  79.   for (i = 0; i < N; i++) {
  80.     scanf("%s", string);
  81.     aux = procura_meia(lista, string);
  82.     if(aux == 1){
  83.       lista = retira_meia(lista, string);
  84.     }
  85.     else if(aux == 0){
  86.       lista = insere_meia(lista, string);
  87.     }
  88.   }
  89.  
  90.   meia_sem_par = quantidade_meia(lista);
  91.   if (meia_sem_par > 0) {
  92.     printf("%d PE(S) SEM PAR\n", meia_sem_par);
  93.   }
  94.   else if (meia_sem_par == 0) {
  95.     printf("TODOS OS PARES ESTAO COMPLETOS\n");
  96.   }
  97.   lista_imprime(lista);
  98.   return 0;
  99. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement