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],f,r;
- }RED;
- typedef struct stek
- {
- int niz;
- struct stek *sljedeci;
- }STEK;
- int push(STEK **tos,int niz)
- {
- STEK *novi=(STEK*)calloc(1,sizeof(STEK));
- novi->niz=niz;
- novi->sljedeci=*tos;
- *tos=novi;
- return 1;
- }
- int pop(STEK **tos, int *niz)
- {
- if (*tos == 0)
- return 0;
- STEK *p = *tos;
- *niz = p->niz;
- *tos = p->sljedeci;
- free(p);
- return 1;
- }
- 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;
- }
- int main()
- {
- STEK *tos=0;
- RED bafer;
- bafer.f=bafer.r=-1;
- int i,n,broj;
- do
- {
- printf("===================================================\n");
- printf("DODAVANJE[1], BRISANJE [2], PRIKAZ [3], KRAJ [0]? ");
- scanf("%d",&i);
- if(i==1)
- {
- printf("unesi n:");
- scanf("%d",&n);
- if(dodaj(&bafer,n)==0)
- printf("Bafer je pun!\n");
- push(&tos,n);
- }
- else if(i==2)
- {
- if(brisi(&bafer,&n)==0)
- printf("Bafer je prazan!\n");
- else
- printf("Obrisani broj je: %d\n",n);
- }
- else if(i==3)
- {
- if(pisi(&bafer)==0)
- printf("Bafer je prazan!\n");
- }
- else if(i!=0)
- printf("Nepoznata opcija.\n");
- }while(i!=0);
- while(pop(&tos, &broj))
- {
- printf("%d ", broj);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement