Sunteți pe pagina 1din 2

1b)PNODAVL sRotireStanga(PNODAVL rad)

{PNODAVL temp;
temp = rad->sd; rad->sd = temp->ss;
temp->ss = rad; calculEchilibru(rad);
calculEchilibru(temp); rad = temp;
return rad;}
PNODAVL dRotireStanga(PNODAVL rad)
{ rad->sd = sRotireDreapta(rad->sd);
rad = sRotireStanga(rad);
return rad;}
void stergeArbore(PNOD rad)
{if(rad->ss) stergeArbore(rad->ss);
if(rad->sd) stergeArbore(rad->sd);
delete rad;}
2) COADA introduceCoada(COADA coada, PVARF varf)
{ PLISTA nou = new LISTA;
nou->varf= varf;
nou->urmatorulDinCoada = NULL;
if(!coada.inceput)
coada.sfarsit = coada.inceput = nou;
else{
coada.sfarsit->urmatorulDinCoada = nou;
coada.sfarsit = nou;
}
return coada;}
PSTIVA push(PSTIVA varfStiva, PVARF varf){
PSTIVA temp = new STIVA;//noul element din stiva
if(temp)
{temp->urmatorulDinStiva = varfStiva;
temp->varf = varf;}
return temp;}

void parcurgereGrafInLatime(PVARF primulVarf)


{if(!primulVarf) return;
bool vizitat[10];
int nr_noduri = 0;
PVARF varfCurent = primulVarf;
while(varfCurent){
vizitat[nr_noduri] = false;
nr_noduri++;
varfCurent = varfCurent->varfUrmator;
} PVARF varfExtras; PARC tempArc;
COADA coada = {NULL, NULL};
coada = introduceCoada(coada, primulVarf);
vizitareVarf(coada.sfarsit->varf, vizitat);
cout << coada.sfarsit->varf->informatie;
do{
coada = extrageCoada(coada, &varfExtras);
varfCurent = varfExtras;
tempArc = varfCurent->capListaArce;
while(tempArc){
if(!vizitat[tempArc->varfDestinatie->informatie-1]){
coada = introduceCoada(coada, tempArc->varfDestinatie);
vizitareVarf(coada.sfarsit->varf, vizitat);
cout << coada.sfarsit->varf->informatie;
} tempArc = tempArc->arculUrmator;
}
}while(coada.inceput);
}

void parcurgereGrafInAdancime(PVARF primulVarf)


{if(!primulVarf) return;
bool vizitat[10];

int nr_noduri = 0;
PVARF varfCurent = primulVarf;
while(varfCurent){
vizitat[nr_noduri] = false;
nr_noduri++;
varfCurent = varfCurent->varfUrmator; }
PVARF varfPop; PARC tempArc;
PSTIVA varfStiva = NULL;
varfStiva = push(varfStiva, primulVarf);
vizitareVarf(varfStiva->varf, vizitat);
cout << varfStiva->varf->informatie;
do{ varfStiva = pop(varfStiva, &varfPop);
varfCurent = varfPop;
tempArc = varfCurent->capListaArce;
while(tempArc){
if(!vizitat[tempArc->varfDestinatie->informatie-1])
{
varfStiva = push(varfStiva, tempArc->varfDestinatie);
vizitareVarf(varfStiva->varf, vizitat);
cout << varfStiva->varf->informatie;
} tempArc = tempArc->arculUrmator;
}
}while(varfStiva);
}
4) Comb
int ST[20],n,k;
int valid(int p)
{ int i;
for(i=1;i<=p-1;i++)
if (ST[i]>=ST[p])sau (St[i]==St[p]) aranj
return 0;
return 1;}
int final(int p)
{if(p==k)
return 1;
else
return 0;}
void tipareste(int p)
{ for(int i=1;i<=p;i++)
printf("%d ", ST[i]);
printf("\n");}
void back()
{ int p;
p=1; ST[p]=0;
while(p>0)
if (ST[p]<n)
{ST[p]=ST[p]+1;
if(valid(p))
if(final(p))
tipareste(p);
else
{ p++;
ST[p]=0;
}
}
else
p--;}
void main()
{ scanf ("%d", &n);
scanf ("%d", &k);
back();
getch();
}

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