Sunteți pe pagina 1din 5

Universitatea Tehnică a Moldovei

Catedra Automatică și Tehnologii Informaționale

RAPORT
despre lucrarea de laborator nr. 5

la Programarea Calculatoarelor
Tema: Analiza prelucrarii structurilor de date arboriscente

A îndeplinit: studentul grupei TI-172, Parasii Alexandru


A controlat: Motpan Sergiu

CHIȘINĂU
2018
 Scopul lucrării:
Insusirea materialului teoretic pentru prelucrarea structurilor de date cu arbori.
Analiza modurilor de prelucrarea a structurilor de date arboriscente.
Studierea modurilor de parcurgere ale arborilor.

 Sarcina lucrării:
De efectuat un program care sa creeze un arbore binar si sa-l parcurga in toate cele 3
moduri studiate.

 Mersul lucrării:

NOȚIUNI GENERALE

 Parcurgerea in PREORDINE:
Se viziteaza radacina – subarborele stang – subarborele drept.
 Parcurgerea in INORDINE:
Se viziteaza subarborele stang – radacina – subarborele drept.
 Parcurgerea in POSTORDINE:
Se viziteaza subarborele stang – subarborele drept – radacina.

 Textul programului:

#include "stdio.h"
#include "stdlib.h"
#include "conio.h"

struct nod
{
int rad;
struct nod *st, *dr;
};

struct nod* r;
void inordine(struct nod* c)
{
if(c)
{
inordine(c->st);
printf(" %d",c->rad);
inordine(c->dr);
}
}
void preordine(struct nod* c)
{
if(c)
{
printf(" %d",c->rad);
preordine(c->st);
preordine(c->dr);
}
}

void postordine(struct nod* c)


{
if (c)
{
postordine(c->st);
postordine(c->dr);
printf(" %d",c->rad);
}
}

struct nod* citire(char s[3],int n)


{
int nr;
struct nod* c=(struct nod*)malloc(sizeof(struct nod));
if (s=="st") printf("\nCitirea subarborelui stang pentru varful [%d]...\n",n);
if (s=="dr") printf("\nCitirea subarborelui drept pentru varful [%d]...\n",n);
if (s=="rd") printf("\nCitirea radacinii...\n");
printf("-> ");scanf("%d",&nr);

if(nr)
{
c->rad=nr;
c->st=citire("st",nr);
c->dr=citire("dr",nr);
return c;
}
else return 0;
}

void main()
{
r=citire("rd",0);
printf("\nparcurgere in INORDINE:\n");
inordine(r);

printf("\nparcurgere in PREORDINE:\n");
preordine(r);

printf("\nparcurgere in POSTORDINE:\n");
postordine(r);

getch();
printf("\n\nSfarsit.\n");
}

 Schema-bloc:
Start

r=citire("rd",0);

parcurgere in INORDINE:

inordine(r);

parcurgere in PREORDINE:

preordine(r);

parcurgere in POSTORDINE:

postordine(r);

getch();

Sfarsit.

Sfarsit

start
inordine(struct nod* c)

DA c!=0 NU

inordine(c->st);

c->rad

inordine(c->dr);
Sfarsit
 Organigrama:

2 3

4 5 NULL 6

NULL NULL NULL NULL 7 NULL

NULL

 Screen-shots:

 Concluzie:
In urma efectuarii lucrarii date, am acumulat experienta in domeniul prelucrarii
structurilor arboriscente. Aici am utilizat functiile recursive, deoarece este foarte comod de a
parcurge toate varfurile cu ajutorul lor. Este important de mentionat ca proiectarea algoritmilor
cu functii recursive necesita o atentie sporita si o experienta in domeniu.
Am reusit sa ma familiarizez cu structura de date e tip liste, ceea ce reprezinta o
experienta nepretuita. Sunt convins ca acestea ma vor ajuta in continuare la elaborarea
eficienta a algoritmilor de calcul.
Arborii binari au un potential extrem de mare, insa cel mai important este de a
cunoaste modul lor de functionare si domeniul de aplicare.

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