Advertisement
sconetto

Fila - Lista Simples

May 12th, 2016
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.93 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <math.h>
  5.  
  6. typedef struct _lista lista;
  7.  
  8. struct _lista {
  9.   int info;
  10.   lista* prox;
  11. };
  12.  
  13. lista* cria_lista() {
  14.   return NULL;
  15. }
  16.  
  17. int vazia(lista* fila) {
  18.   return(fila == NULL);
  19. }
  20.  
  21. lista* insere_fila(lista* fila, int info) {
  22.   lista* novo = (lista*)malloc(sizeof(lista));
  23.   lista* aux;
  24.   aux = fila;
  25.   novo->info = info;
  26.   novo->prox = NULL;
  27.  
  28.   while (aux->prox != NULL) {
  29.     aux = aux->prox;
  30.   }
  31.   aux->prox = novo;
  32.  
  33.   return fila;
  34. }
  35.  
  36. void imprime_fila(lista* fila) {
  37.   if(!vazia(fila)) {
  38.     lista* aux;
  39.     for (aux = fila; aux != NULL; aux = aux->prox) {
  40.       printf("%d\n", aux->info);
  41.     }
  42.   }
  43.   else {
  44.     printf("Fila nao encontrada\n");
  45.   }
  46. }
  47.  
  48. lista* retira_fila(lista* fila) {
  49.   lista* aux;
  50.   aux = fila;
  51.   fila = aux->prox;
  52.   free(aux);
  53.   return fila;
  54. }
  55.  
  56. void leia_string(char *s) {
  57.     char c;
  58.     int i = 0;
  59.     do {
  60.             c = getchar();
  61.             if(c != '\n')
  62.                 s[i] = c;
  63.             i++;
  64.         }while(c != '\n' && c != '\0');
  65. }
  66.  
  67. int main(int argc, char const *argv[]) {
  68.   char *menu;
  69.   int i, j;
  70.   int tamanho, numero = 0;
  71.   menu = malloc(sizeof(char));
  72.   lista* fila;
  73.   fila = cria_lista();
  74.   while (1) {
  75.     leia_string(menu);
  76.  
  77.     if(toupper(menu[0]) == 'I') {
  78.       tamanho = strlen(menu);
  79.       for (i = 1; i < tamanho; i++) {
  80.         if(i == 1) {
  81.         numero += (((int)menu[i])-48)*100;
  82.         }
  83.         else if(i == 2) {
  84.           numero += (((int)menu[i])-48)*10;
  85.         }
  86.         else if(i == 3){
  87.           numero += ((int)menu[i])-48;
  88.         }
  89.       }
  90.       printf("%d\n", numero);
  91.       fila = insere_fila(fila, numero);
  92.     }
  93.     else if(toupper(menu[0]) == 'R') {
  94.       fila = retira_fila(fila);
  95.     }
  96.     else if(toupper(menu[0]) == 'P') {
  97.       imprime_fila(fila);
  98.     }
  99.     else if(toupper(menu[0]) == 'F') {
  100.       break;
  101.     }
  102.   }
  103.   return 0;
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement