Documente Academic
Documente Profesional
Documente Cultură
1)
a)Sa se construiasca un arbore AVL(de cautare) pe baza vectorului y=-18,29,12,21,24,26,22,5,14,-29,-1,-23.
Definiti elementul vectorului. -3pct
typedef struct nodAVL{
int informatie;
int echilibru;
nodAVL *ss, *sd;
} NODAVL, *PNODAVL;
b)Scrieti codul functiilor care realizeaza rotire simpla/dubla la dreapta/stanga. 3-pct
PNODAVL sRotireStanga(PNODAVL rad){
PNODAVL temp;
temp = rad->sd;
rad->sd = temp->ss;
temp->ss = rad;
calculEchilibru(rad);
calculEchilibru(temp);
rad = temp;
return rad;
}
b)Sa se scrie codul functiei care extrage/introduce un varf dintr-o stiva/coada de varfuri.Definiti coada/stiva. 3-pct
c)Sa se scrie codul functiei care realizeaza parcurgerea grafului in adancime/latime iterativ. Exemplificati functionarea
codului daca parcurgerea porneste din varful 4. 4-pct(3-pct functia+1pct exemplificare) pag 78-86
3)
a)Sa se scrie codul functiei care realizeaza sortarea in ordine crescatoare/descrescatoare prin
QuickSort/MergeSort+interclasare. 6-pct pag 112-124
QUICKSORT: void QuickSort(int inceput, int sfarsit){
if (inceput>=sfarsit)
{
return;
}
MERGESORT:
Void interclasare(int inceput1,int sfarsit1,int inceput2,int sfarsit2);
void mergeSort(int inceput,int sfarsit){
if(inceput>=sfarsit)return;
int mijloc=(inceput+sfarsit)/2;
mergeSort(inceput,mijloc);
mergeSort(mijloc+1,sfarsit);
interclasare(inceput,mijloc,mijloc+1,sfarsit)
}
void interclasare(int inceput1,int sfarsit1,
int inceput2,int sfarsit2){
int vTemp[N],dim_vTemp, i=inceput1,j=inceput2,k=0;
dim_vTemp=sfarsit1-inceput1+1+sfarsit2-inceput2+1;
while(i<=sfarsit1)&&(j<=sfarsit2){
if(V[i]<v[j]{
vTemp[k]=v[i];
i++;
}
else{
vTemp[k]=v[i];
j++
}
k++;
}
while(i<=sfarsit1){
vTemp[k]=v[i];
i++;
k++;
}
while(j<=sfarsit2){
vTemp[k]=v[j];
j++;
k++;}
for(k=0;k<=sfarsit1-inceput1;k++) v[inceput1+k]=vTemp[k];
for(k=sfarsit1-inceput1+1;k<=(sfarsit1-inceput1+1)+(sfarsit2-inceput2);k++)
v[inceput2+(k-sfarsit1+inceput1-1)]=vTemp[k];}
b)Sa se explice functionarea codului pentru vectorul y. 4-pct
4) i)
a)Sa se scrie codul functiilor care realizeaza generarea aranjamentelor/combinarilor/ permutari/ 6-pct
Aranjamente Combinari Permutari
int st[20]; int st[20];
int n; int p; int st[20];
int valid (int k) int valid (int k) int valid (int k)
{int i; {int i; {int i;
for (i=1;i<k;i++) for (i=1;i<k;i++) for (i=1;i<k;i++)
if (st[k]==st[i]) if(st[k]<=st[i]) if (st[k]==st[i])
return 0; return 0; return 0;
return 1;} return 1;} return 1;}
void afisare (int k) void afisare (int k) void afisare (int k)
{int i; {int i; {int i;
for (i=1;i<k;i++) for (i=1;i<k;i++) for (i=1;i<k;i++)
cout<<st[i]; cout<<st[i]; cout<<st[i];
cout<<" ";} cout<<" ";} cout<<" ";}