Sunteți pe pagina 1din 8

/* Operatii asupra Cozilor prin Tipul Tablou */

#include <stdio.h>

#include <conio.h>

#include <ctype.h>

#include <stdlib.h>

#define lg_max 5

typedef int tip_elem;

typedef struct

tip_elem elemente[lg_max];

int fata, spate;

}COADA;

COADA C;

int er,i,j;

void initializare(COADA *C)

C->spate=lg_max-1;

C->fata=0;

} /* Initializare */

int avanseaza(int i)

{
if(i==lg_max-1)

return 0;

else return i+1;

} /* Avanseaza */

void adauga(tip_elem X, COADA *C)

er=0;

if(avanseaza(avanseaza(C->spate)) == C->fata)

er=1;

printf("Coada este plina!! \n");

else

C->spate=avanseaza(C->spate);

C->elemente[C->spate]=X;

} /* Adauga */

void creare(COADA *C)

char ch;

tip_elem X;

initializare(C);

printf("Adaugati ?! [D/N] : ");

fflush(stdin); scanf("%c", &ch); ch=toupper(ch);


while(ch=='D')

printf("Dati elementul : "); scanf("%d", &X);

adauga(X, C);

printf("Mai agaugati ?! [D/N] : ");

fflush(stdin); scanf("%c", &ch); ch=toupper(ch);

} /* Creare */

int c_vida(COADA C)

if(avanseaza(C.spate)==C.fata)

return 1;

else return 0;

} /* c_vida */

void listare(COADA C)

int i;

if(c_vida(C))

printf("Coada este vida!! \n");

else

printf("Coada : ");

i=C.fata;

while(i != avanseaza(C.spate))

{
printf("%d ", C.elemente[i]);

i=avanseaza(i);

printf("\n");

} /* Listare */

void listare_Tab(void)

printf("Tabloul : [ ");

for(i=0; i<=lg_max-2; i++)

printf("%d, ", C.elemente[i]);

printf("%d ] \n", C.elemente[lg_max-1]);

} /* listare_Tab*/

tip_elem primul(COADA C)

er=0;

if(c_vida(C)==1)

er=1;

printf("Coada este vida!! \n");

return -1;

else return C.elemente[C.fata];

} /* Primul */
void sterge(COADA *C)

er=0;

if(c_vida(*C)==1)

er=1;

printf("Coada este vida!! \n");

else

C->elemente[C->fata]=0;

C->fata=avanseaza(C->fata);

} /* Sterge */

int cauta(tip_elem X,COADA C)

int i;

i=C.fata;

while(i!=avanseaza(C.spate))

if(C.elemente[i]==X)

return i;

else i=avanseaza(i);

return -1;

} /* Cauta */

void main(void)
{

tip_elem X;

char op;

initializare(&C);

do

clrscr();

printf("\t\t\t Operatii asupra Cozilor prin Tipul Tablou \n\n");

printf("C-Creare. \n");

printf("A-Adaugare. \n");

printf("L-Listare. \n");

printf("P-Afiseaza elementul din fata cozii. \n");

printf("G-Cautare. \n");

printf("S-Stergere. \n");

printf("E-Iesire. \n\n");

printf("Introdu optiunea : ");

fflush(stdin); scanf("%c", &op); op=toupper(op);

switch(op)

case 'C': creare(&C);

break;

case 'A': printf("Introduceti elementul : ");

fflush(stdin); scanf("%d", &X);

adauga(X, &C);

break;

case 'L': break;

case 'G': if(c_vida(C))


printf("Coada este vida!! \n");

else

printf("Elementul pe care il cautati : ");

fflush(stdin); scanf("%d", &X);

j=cauta(X, C);

if(j!=lg_max)

printf("Elementul cautat este : ");

printf("%d \n", C.elemente[j]);

else

printf("Nu am gasit elementul ");

printf("%d in coada!! \n", X);

break;

case 'P': X=primul(C);

if(er==0)

printf("Primul element din Coada este : %d \n", X);

break;

case 'S': sterge(&C);

break;

case 'E': break;

default : printf("Optiune eronata!! ");

break;
} /* SWITCH */

listare(C);

listare_Tab();

getch();

}while(op!='E');

} /* MAIN */

S-ar putea să vă placă și