Advertisement
Guest User

Untitled

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