Structuri de Date și Algoritmi

Extras din proiect

Motivatia alegerii temei. Utilitatea aplicatiei
Am ales aceasta tema ca urmare a cerintelor avute la materia structuri de date si algoritmi, problema aleasa fiind baza si ajutand la fiabilizarea unor probleme mai complexe .
2.Structura aplicatiei: Schema logica main()
3.Detalii tehnice de implementare
#include<stdio.h>
#include<conio.h>
#include<malloc.h>
typedef struct nod
{ 
int nr;
nod *st, *dr;};
nod *prad=NULL,*a;
int v[50],x;
int sumacif(int i)
{ 
int s=0,c;
do {
c=i%10;
i=i/10;
s=s+c; } while(i!=0);
return s; 
}
void inserare_nod(nod *&p, int k)
{
int n;
nod *q; 
if (!p)
{
n=sizeof(nod);
q=(nod *)malloc(n); 
q->nr=k; 
q->st=q->dr=NULL; p=q; } 
else 
{
if(p->nr!=k)
if(sumacif(p->nr)>=sumacif(k)) 
inserare_nod(p->st,k); 
else 
inserare_nod(p->dr,k); 
} 
}
void preordine(nod *p) 
{if (p) 
{
printf(" %d ",p->nr); 
preordine(p->st); 
preordine(p->dr); 
} } 
void inordine(nod *p) 
{ 
if (p) 
{ 
inordine(p->st); 
printf(" %d ",p->nr); 
inordine(p->dr); } } 
void postordine(nod *p) 
{ 
if (p) 
{ 
postordine(p->st); 
postordine(p->dr); 
printf(" %d ",p->nr); 
} } 
void cautare(int x,int y,nod *&a) 
{ int i;
if(!a) 
printf("\nNodul nu exista! \n"); 
else 
if (x<a->nr) 
cautare(x,y,a->st); 
else 
if (x>a->nr) 
cautare(x,y,a->dr); 
else 
if(y !=0 )
a->nr=y; 
else
{
a->nr=v[1];
for(i=2;i<=x;i++)
inserare_nod(a,v[i]);
}} 
int noduri(nod *p) 
{ 
if (!p) 
return 0; 
else 
return (1+noduri(p->st)+noduri(p->dr)); 
} 
int max(int x,int y) 
{ 
if (x<y) return y; 
else return x; 
} 
int nivel(nod *p) 
{ 
if (!p) 
return 0; 
else 
return (1+max(nivel(p->st),nivel(p->dr))); 
}
int nr_frunze(nod *p) 
{ 
if(!p) 
return 0; 
else 
if((!p->st)&&(!p->dr)) 
return 1; 
else 
return (nr_frunze(p->st)+nr_frunze(p->dr)); 
} 
int main()
{ int k,y;
printf("Dati radacina arborelui binar:");
scanf("%d",&k);
while(k!=0)
{
inserare_nod(prad,k);
printf("Dati un numar:");
scanf("%d",&k);
} 
printf("\nCe operatie doriti sa efectuati?\n");
printf("a) Afisare arbore in preordine,inordine si postordine;\n");
printf("b) Inlocuirea unui nod cu un nod nou;\n");
printf("c) Inlocuirea unui nod cu un arbore construit dintr-un vector dat;\n");
printf("d) Date despre arborele binar;\n");
printf("Dati optiunea dumneavoastra: ");
switch(getche())
{
case 'a':
{
printf("\n\nPreordine:");
preordine(prad);
printf("\nInordine:");
inordine(prad);
printf("\nPostordine:");
postordine(prad);
break;
}
case 'b':
{
printf("\n\nDati nodul vechi:");
scanf("%d",&k);
printf("Dati nodul nou:");
scanf("%d",&y);
cautare(k,y,prad);
printf("Preordine:");
preordine(prad);
printf("\nInordine:");
inordine(prad);
printf("\nPostordine:");
postordine(prad);
break;
}
case 'c':
{
printf("\n\nDati nodul vechi:");
scanf("%d",&k);
printf("Numarul de elemente din vector:");
scanf("%d",&x);
for(y=1;y<=x;y++)
{printf("v[%d]= ",y);
scanf("%d",&v[y]);}
cautare(k,0,prad);
preordine(prad);
break;
}


Fisiere în arhivă (3):

  • Structuri de Date si Algoritmi
    • Structuri de Date si Algoritmi.cpp
    • Structuri de Date si Algoritmi.docx
    • Structuri de Date si Algoritmi.exe

Imagini din acest proiect

Ne pare rau, pe moment serviciile de acces la documente sunt suspendate.


Hopa sus!