Advertisement
Guest User

Untitled

a guest
May 23rd, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.48 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define MAX 5
  4.  
  5. typedef struct red{
  6. int niz[MAX];
  7. int f, r;
  8. } RED;
  9.  
  10. typedef struct cvor{
  11. int a;
  12. struct cvor *sljedeci;
  13. } CVOR;
  14.  
  15. int isFull(RED *bafer)
  16. {
  17. return (bafer->r + 1) % MAX == bafer->f;
  18. }
  19.  
  20. int isEmpty(RED *bafer)
  21. {
  22. return bafer->f == -1;
  23. }
  24.  
  25. int dodaj(RED *bafer, int podatak)
  26. {
  27. if (isFull(bafer)) return 0;
  28. if (bafer->f == -1) bafer->f = 0;
  29. bafer->r = (bafer->r + 1) % MAX;
  30. bafer->niz[bafer->r] = podatak;
  31. return 1;
  32. }
  33.  
  34. int brisi(RED *bafer, int *podatak)
  35. {
  36. if (isEmpty(bafer)) return 0;
  37. *podatak = bafer->niz[bafer->f];
  38. if (bafer->f == bafer->r) bafer->f = bafer->r = -1;
  39. else bafer->f = (bafer->f + 1) % MAX;
  40. return 1;
  41. }
  42.  
  43. int pisi(RED *bafer)
  44. {
  45. if (isEmpty(bafer)) return 0;
  46. int i = bafer->f;
  47. if (bafer->f <= bafer->r)
  48. while (i <= bafer->r) printf("%d ", bafer->niz[i++]);
  49. else
  50. {
  51. while (i <= MAX - 1) printf("%d ", bafer->niz[i++]);
  52. i = 0;
  53. while (i <= bafer->r) printf("%d ", bafer->niz[i++]);
  54. }
  55. return 1;
  56. }
  57.  
  58. void push(CVOR **tos, int *t)
  59. {
  60. CVOR *novi = (CVOR*)malloc(sizeof(CVOR));
  61. novi->a = *t;
  62. novi->sljedeci = *tos;
  63. *tos = novi;
  64. }
  65.  
  66. int pop(CVOR **tos, int *t)
  67. {
  68. if (*tos == 0) return 0;
  69. CVOR *p = *tos;
  70. *t = p->a;
  71. *tos = p->sljedeci;
  72. free(p);
  73. return 1;
  74. }
  75.  
  76. int main()
  77. {
  78. RED bafer;
  79. bafer.f = bafer.r = -1;
  80. char c;
  81. int broj;
  82. CVOR *tos = 0;
  83. do{
  84. printf("===================================================\n");
  85. printf("Dodavanje[D], brisanje [B], prikaz [P], kraj [0]? ");
  86. scanf("\n%c", &c);
  87. if (c == 'D')
  88. {
  89. printf(" Unesite broj: ");
  90. scanf("%d", &broj);
  91. push(&tos, &broj);
  92. if (dodaj(&bafer, broj) == 0) printf(" Bafer je pun!\n");
  93. }
  94. else if (c == 'B')
  95. {
  96. if (brisi(&bafer, &broj)) printf(" Obrisan je broj: %d\n", broj);
  97. else printf(" Bafer je prazan!\n");
  98. }
  99. else if (c == 'P')
  100. {
  101. printf(" Sadrzaj bafera: ");
  102. if (pisi(&bafer) == 0) printf("\n Bafer je prazan!\n");
  103. else printf("\n");
  104. }
  105. else if (c != '0') printf(" Nepoznata opcija - '%c'.\n", c);
  106. }
  107. while (c != '0');
  108. while(pop(&tos,&broj)) printf("%d ", broj);
  109. return 0;
  110. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement