You are on page 1of 4

/* Operatii asupra Cozii prin Tipul Pointer */

#include <stdio.h>;
#include <conio.h>;
#include <malloc.h>;
#include <ctype.h>;

typedef int tip_elem;


struct NOD
{
tip_elem element;
struct NOD *urm;
};
typedef struct NOD Tnod;
typedef Tnod* ref;
typedef struct
{
ref fata;
ref spate;
}COADA;

COADA C;
ref r;
int er,k,i;
char op;
tip_elem X;

void initializare(COADA *C)


{
C->fata=(ref)malloc( sizeof(Tnod) );
C->spate=C->fata;
C->spate->urm=NULL;
}/* Initializare */

int c_vida(COADA C)
{
if(C.fata==C.spate)
return 1;
else return 0;
} /* c_vida */

tip_elem primul(COADA C)
{
if(c_vida(C)==1)
{
er=1;
printf("Coada este vida!! \n");
return 0;
}
else return C.fata->urm->element;
} /* Primul */
void listare(void)
{
if(c_vida(C))
{
er=1;
printf("Coada este vida!! \n");
}
else
{
printf("Coada : ");
r=C.fata->urm;
while (r!=NULL)
{
printf("%d ", r->element);
r=r->urm;
}
}
printf("\n");
} /* Listare */

void adauga(tip_elem X,COADA *C)


{
C->spate->urm=(ref)malloc( sizeof(Tnod) );
C->spate=C->spate->urm;
C->spate->element=X;
C->spate->urm=NULL;
} /* Adauga */

void sterge(COADA *C)


{
if(c_vida(*C)==1)
{
er=1;
printf("Coada este vida!! \n");
printf("Nu se pot face suprimari!! \n");
}
else
{
r=C->fata;
C->fata=C->fata->urm;
free(r);
}
} /* Sterge */

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 */

void cautare(int k)
{
if(c_vida(X))
{
r=NULL;
er=1;
}
else
{
r=C.fata->urm;
while( (r->element!=X) && r!=NULL)
r=r->urm;
}
} /* Cautare */

void main(void)
{
initializare(&C);
do
{
clrscr();
printf("\t\t\tOperatii asupra Cozii prin Tipul Pointer \n\n");
printf("C-Creare. \n");
printf("L-Listare. \n");
printf("A-Adaugare. \n");
printf("F-Cautare. \n");
printf("S-Suprimare. \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 'L' : break;
case 'A' : printf("Elementul : ");
scanf("%d", &X);
adauga(X, &C);
break;
case 'S' : sterge(&C);
break;
case 'F': if(c_vida(C)==0)
{
printf("\n Dati cheia NOD-lui de cautat : ");
scanf("%d", &k);
cautare(k);
if(r != NULL)
printf("NOD-ul cautat este %d \n", r->element);
else printf("\nElementul %d nu exista!! \n", k);
}
else printf("\nCoada este vida!! \n");
break;
case 'E' : break;
default : printf("Optiune eronata!! \n");
} /* SWITCH */
listare();
getch();
}while (op!='E');
} /* MAIN */

You might also like