Pentru a implementa structura liniara (lista simplu inlantuita) si structura de tip arbore binar vom apela la structuri definite recursiv.
Consideram o lista nevida fiind formata din primul element si sublista aflata la adresa de legatura memorata in fiecare element pe langa informatia propriuzsa
In exemplul urmator vom crea o lista care va contine monoamele unui polinom in ordinea descrescatoare a gradelor. Un element din lista va contine pe langa informatia propriuzisa (coeficientul si gradul monomului) si adresa urmatorului monom (adresa sublistei). De exemplu, pentru polinomul P(x)=120x12+77x7+130x3+22x2 lista va contine patru elemente avand informatiile (20,12); (77,7); (130,3); (22,2), indiferent de ordinea introducerii monoamelor. Deoarece coeficientii sunt nenuli, introducerea datelor se termina la primul coeficient nul.
#include <stdio.h>
#include <alloc.h>
#include <iostream.h>
#define Nil (NULL)
struct Monom ;
struct Elem ;
typedef Elem* Polinom; // Lista de monoame ordonate decrescator dupa grad
int Citit(Monom &M)
void
else Ado(P->Leg,M);
void Cre(Polinom &P)
void Tip(Polinom P)
void main (void)
Date : P (Coef,Grad) : 120 12 22 2 77 7 130 3 0 ¿
Rezultate : Polinomul P(X)=120X^12+77X^7+130X^3+22X^2
Exemplu:
Lista simpla ordonata crescator
#include <iostream.h> #include 'Crt.Cpp'
typedef int Info;
struct Elem;
typedef Elem* Lista;
struct Elem ;
int Citit(Info& inf)
void
//sau
else ; Lista Nou = new Elem (el); L=Nou;}
void Cre(Lista& L)
void Tip(Lista L)
cout << 'b.'; }
void main (void)
Consideram ca un arbore binar nevid este format din radacina, subarbore stang si subarbore drept.
Exemplu:
// Arbore ordonat, traversat in inordine
#include <iostream.h> #include 'Crt.Cpp'
typedef int Info;
struct Nod; typedef Nod* Arb; struct Nod ;
int Citit(Info& inf)
void
void
//sau
else ; A=new Nod (n); }
void Cre(Arb& A)
void Ino(Arb A)
void main (void)
In exemplul urmator se citeste un arbore genealogic ascendent (dand pentru fiecare persoana nume parintilor), apoi se va reprezenta grafic arborele construit intr-o fereastra ecran precizata (u1,v1,u2,v2). Distanta dintre doua nivele se calculeaza tinand cont de adancimea arborelui.
#include <stdio.h>
#include <alloc.h>
#include <string.h>
#include <iostream.h>
#include <graphics.h>
#include <conio.h>
typedef char TInf [13] ;
struct Nod ;
typedef Nod* Arb;
int Citit(TInf &Inf)
void Gen(Arb &A)
else A=NULL;
void Repr_Grafic(Arb A, int u1, int v1, int u2, int v2, int p)
// Dr
int Max (int a, int b)
int Adi(Arb A)
void main (void)
|