Anda di halaman 1dari 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 */

Anda mungkin juga menyukai