Advertisement
Guest User

Deque Implementation - C - L8

a guest
Oct 9th, 2015
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.60 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "deque.h"
  4.  
  5. #define MAXN 10
  6.  
  7. typedef struct deque
  8. {
  9.     int dados[MAXN];
  10.     int ini, fim, tam;
  11. } deque_t;
  12.  
  13. void deque_init (deque_t* d)
  14. {
  15.     d->tam = 0;
  16.     d->fim = -1;
  17.     d->ini = 0;
  18. }
  19.  
  20. void deque_push_back (deque_t* d, int x)
  21. {
  22.     if (!deque_full(*d))
  23.     {
  24.         d->fim >= MAXN - 1 ? d->fim = 0 : d->fim++;
  25.         d->dados[d->fim] = x;
  26.         d->tam++;
  27.     }
  28.     else
  29.         printf("Container cheio!\n");
  30. }
  31.  
  32. void deque_push_front (deque_t* d, int x)
  33. {
  34.     if (!deque_full(*d))
  35.     {
  36.         d->ini <= 0 ? d->ini = (MAXN - 1) : d->ini--;
  37.         d->dados[d->ini] = x;
  38.         d->tam++;
  39.     }
  40.     else
  41.         printf("Container cheio!\n");
  42. }
  43.  
  44. int deque_pop_back (deque_t* d)
  45. {
  46.     if (!deque_empty(*d))
  47.     {
  48.         int x = d->dados[d->fim];
  49.         d->fim <= 0 ? d->fim = (MAXN - 1) : d->fim--;
  50.         d->tam--;
  51.         return x;
  52.     }
  53.     else
  54.         printf("Container vazio!\n");
  55. }
  56.  
  57. int deque_pop_front (deque_t* d)
  58. {
  59.     if (!deque_empty(*d))
  60.     {
  61.         int x = d->dados[d->ini];
  62.         d->ini >= MAXN - 1 ? d->ini =0 : d->ini++;
  63.         d->tam--;
  64.         return x;
  65.     }
  66.     else
  67.         printf("Container vazio!\n");
  68. }
  69.  
  70. int deque_full (deque_t d)
  71. {
  72.     if (d.tam == MAXN) return 1;
  73.     return 0;
  74. }
  75.  
  76. int deque_empty (deque_t d)
  77. {
  78.     if (!d.tam) return 1;
  79.     return 0;
  80. }
  81.  
  82. void deque_print (deque_t d)
  83. {
  84.     int i;
  85.     for (i = d.ini; i != d.fim; i >= MAXN - 1 ? i = 0 : i++)
  86.     {
  87.         printf("|%d| i = %d\n", d.dados[i], i);
  88.     }
  89.     printf("|%d| i = %d\n", d.dados[i], i);
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement