Herowaree

Fila Circular.c

Nov 23rd, 2014
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.99 KB | None | 0 0
  1. #include <stdio.h>
  2. #define MAX 100
  3.  
  4. struct Fila{
  5. int vetor[MAX];
  6. int inicio;
  7. int fim;
  8. int tamanho;
  9. };
  10.  
  11. void iniciaFila(struct Fila *fila){
  12. fila->tamanho = 0;
  13. fila->fim = -1;
  14. fila->inicio = 0;
  15. }
  16.  
  17. int vaziaFila(struct Fila *fila){
  18. if(fila->tamanho == 0){
  19. return 1;
  20. }else{
  21. return 0;
  22. }
  23. }
  24.  
  25. int tamanhoFila(struct Fila *fila){
  26. return fila->tamanho;
  27. }
  28.  
  29. int cheiaFila(struct Fila *fila){
  30. if(fila->tamanho == MAX){
  31. return 1;
  32. }else{
  33. return 0;
  34. }
  35. }
  36.  
  37. int primeiroFila(struct Fila *fila, int *dado){
  38. if(vaziaFila(fila)) return 0;
  39.  
  40. *dado = fila->vetor[ fila->inicio ];
  41.  
  42. return 1;
  43. }
  44.  
  45. int insereFila(struct Fila *fila, int valor){
  46. if(cheiaFila(fila)) return 0;
  47.  
  48. fila->fim = (fila->fim + 1) % MAX;
  49. fila->vetor[fila->fim] = valor;
  50. fila->tamanho++;
  51.  
  52. return 1;
  53. }
  54.  
  55. int removeFila(struct Fila *fila, int *dado){
  56. if(vaziaFila(fila)) return 0;
  57.  
  58. *dado = fila->vetor[fila->inicio];
  59. fila->inicio = (fila->inicio + 1) % MAX;
  60. fila->tamanho--;
  61.  
  62. return 1;
  63. }
  64.  
  65. int mostraFila(struct Fila *fila){
  66.  
  67. if(vaziaFila(fila)){
  68. printf("Fila vazia.\n");
  69. return 0;
  70. }
  71. printf("Tamanho da fila: %d elemento(s)\n", fila->tamanho);
  72. printf("-------------------------------------\n");
  73. int indice, count;
  74. for(count = fila->inicio, indice = 1; count != fila->fim + 1; count = (count + 1)%MAX, indice++){
  75. printf("\tPOSICAO: %d\n", indice);
  76. printf("\tVALOR: %d\n", fila->vetor[count]);
  77. printf("\n");
  78. }
  79.  
  80. return 1;
  81. }
  82.  
  83. int procuraFila(struct Fila *fila, int valor){
  84.  
  85. //Retorna -1 se o elemento não for encontrado
  86. if(vaziaFila(fila)) return -1;
  87.  
  88. int count, posicao;
  89. for(count = fila->inicio, posicao = 1; count != fila->fim + 1; count = (count + 1) % MAX, posicao++){
  90. if(fila->vetor[count] == valor){
  91. return posicao;
  92. }
  93. }
  94.  
  95. return -1;
  96. }
Advertisement
Add Comment
Please, Sign In to add comment