Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #define MAX 5
- typedef struct red{
- int niz[MAX];
- int f, r;
- } RED;
- typedef struct cvor{
- int a;
- struct cvor *sljedeci;
- } CVOR;
- int isFull(RED *bafer)
- {
- return (bafer->r + 1) % MAX == bafer->f;
- }
- int isEmpty(RED *bafer)
- {
- return bafer->f == -1;
- }
- int dodaj(RED *bafer, int podatak)
- {
- if (isFull(bafer)) return 0;
- if (bafer->f == -1) bafer->f = 0;
- bafer->r = (bafer->r + 1) % MAX;
- bafer->niz[bafer->r] = podatak;
- return 1;
- }
- int brisi(RED *bafer, int *podatak)
- {
- if (isEmpty(bafer)) return 0;
- *podatak = bafer->niz[bafer->f];
- if (bafer->f == bafer->r) bafer->f = bafer->r = -1;
- else bafer->f = (bafer->f + 1) % MAX;
- return 1;
- }
- int pisi(RED *bafer)
- {
- if (isEmpty(bafer)) return 0;
- int i = bafer->f;
- if (bafer->f <= bafer->r)
- while (i <= bafer->r) printf("%d ", bafer->niz[i++]);
- else
- {
- while (i <= MAX - 1) printf("%d ", bafer->niz[i++]);
- i = 0;
- while (i <= bafer->r) printf("%d ", bafer->niz[i++]);
- }
- return 1;
- }
- void push(CVOR **tos, int *t)
- {
- CVOR *novi = (CVOR*)malloc(sizeof(CVOR));
- novi->a = *t;
- novi->sljedeci = *tos;
- *tos = novi;
- }
- int pop(CVOR **tos, int *t)
- {
- if (*tos == 0) return 0;
- CVOR *p = *tos;
- *t = p->a;
- *tos = p->sljedeci;
- free(p);
- return 1;
- }
- int main()
- {
- RED bafer;
- bafer.f = bafer.r = -1;
- char c;
- int broj;
- CVOR *tos = 0;
- do{
- printf("===================================================\n");
- printf("Dodavanje[D], brisanje [B], prikaz [P], kraj [0]? ");
- scanf("\n%c", &c);
- if (c == 'D')
- {
- printf(" Unesite broj: ");
- scanf("%d", &broj);
- push(&tos, &broj);
- if (dodaj(&bafer, broj) == 0) printf(" Bafer je pun!\n");
- }
- else if (c == 'B')
- {
- if (brisi(&bafer, &broj)) printf(" Obrisan je broj: %d\n", broj);
- else printf(" Bafer je prazan!\n");
- }
- else if (c == 'P')
- {
- printf(" Sadrzaj bafera: ");
- if (pisi(&bafer) == 0) printf("\n Bafer je prazan!\n");
- else printf("\n");
- }
- else if (c != '0') printf(" Nepoznata opcija - '%c'.\n", c);
- }
- while (c != '0');
- while(pop(&tos,&broj)) printf("%d ", broj);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement