Ajutor la retinerea frunzelor intr-un arbore multicai

Intrebari despre limbajul C++, standardul C++, STL, OOP in C++ sau alte subiecte nelegate de VisualC++
Post Reply
Abi_Moonbow
Junior
Junior
Posts: 15
Joined: 17 Apr 2013, 11:36
Judet: Argeş

Ajutor la retinerea frunzelor intr-un arbore multicai

Post by Abi_Moonbow » 17 Apr 2013, 11:49

Salut!
Am o problema :( si sunt chiar incurcat... Va rog mult sa ma ajutati!
Am creat clasa arbore ce creeaza un arbore multicai prin alocare dinamica. Trebuie sa adaug noduri doar pe la frunze si nu stiu cum sa retin frunzele. As vrea sa le retin intr-o lista dublu inlantuita, dar nu stiu cum sa implementez aceasta cu POO. Nu stiu cum sa fac ca lista mea de fapt sa contina adresele nodurilor frunze ale arborelui.

Adaug aici definitia clasei arbore:

Code: Select all

class Tree
{
private:

	Tree *parinte;
	int info;
	int nrCopii;
	Tree *fiu, *frate;

public:

	Tree();
	Tree( int val, Tree *parinte );
	void set_value( int );
	int get_value( void );
        void add_child( Tree *child );
        int num_of_children();
        Tree* get_child( int i );
	Tree* get_parent( void );
        void remove_child( Tree* node );
        void print( Tree *node, int ns );
};
Va rog mult dati-mi ajutor! Multumesc!
Last edited by Marius Bancila on 17 Apr 2013, 14:33, edited 1 time in total.
Reason: code tags



User avatar
Marius Bancila
Fondator
Fondator
Posts: 2344
Joined: 11 Jul 2007, 11:45
Judet: Timiş
Location: Timisoara
Contact:

Re: Ajutor la retinerea frunzelor intr-un arbore multicai

Post by Marius Bancila » 17 Apr 2013, 14:35

De ce trebuie sa reimplementezi lista dublu inlantuita, cand s-au chinuit altii sa o faca in STL? Pur si simplu foloseste std::list din STL.
Marius Bancila
Fondator Codexpert, Microsoft MVP VC++
Site personal | Blog

Abi_Moonbow
Junior
Junior
Posts: 15
Joined: 17 Apr 2013, 11:36
Judet: Argeş

Re: Ajutor la retinerea frunzelor intr-un arbore multicai

Post by Abi_Moonbow » 17 Apr 2013, 22:49

Mersi pentru raspuns!
Da, lista o voi implementa cu STL, dar nu stiu de ce tip va fi. std::list<Tree> ? As vrea ca atunci cand modific lista sa se modifice automat si arborele...

User avatar
Marius Bancila
Fondator
Fondator
Posts: 2344
Joined: 11 Jul 2007, 11:45
Judet: Timiş
Location: Timisoara
Contact:

Re: Ajutor la retinerea frunzelor intr-un arbore multicai

Post by Marius Bancila » 18 Apr 2013, 11:04

Pai lista ar trebui sa tina pointeri la Tree, nu? Nu vrei sa copiezi nodurile, vrei doar sa pastrezi referinte (pointeri) la ele.
Marius Bancila
Fondator Codexpert, Microsoft MVP VC++
Site personal | Blog

Abi_Moonbow
Junior
Junior
Posts: 15
Joined: 17 Apr 2013, 11:36
Judet: Argeş

Re: Ajutor la retinerea frunzelor intr-un arbore multicai

Post by Abi_Moonbow » 18 Apr 2013, 11:13

Exact! Dar STL nu ma lasa sa declar o lista de pointer gen std::list<*Tree>...

Fara STL am cam rezolvat. Am declarat o lista dublu inlantuita
typedef struct nod
{
Tree *leaf;
nod *next, *prew;
}Nod2;
si, intradevar acum pastrez referintele si nu copiez nodurile :D
Dar m-ar interesa daca as putea face lucrul acesta cu STL...
Last edited by Abi_Moonbow on 18 Apr 2013, 11:20, edited 1 time in total.

User avatar
Marius Bancila
Fondator
Fondator
Posts: 2344
Joined: 11 Jul 2007, 11:45
Judet: Timiş
Location: Timisoara
Contact:

Re: Ajutor la retinerea frunzelor intr-un arbore multicai

Post by Marius Bancila » 18 Apr 2013, 11:19

Pai asa se declara? Unde ai vazut tu asa ceva? E std::list<Tree*>.

Am impresia ca tu n-ai inteles cum se declara tipul pointer. Se pune asterisk dupa numele tipului. Deasta eu nu fac niciodata asa ceva:

Code: Select all

Tree *nod;
si scriu intotdeauna

Code: Select all

Tree* nod;
Ambele sunt corecte, dar mi se pare mult mai clara a doua varianta, pentru ca imi spune ca nod este o variabila de tip Tree*, adica pointer la Tree.
Marius Bancila
Fondator Codexpert, Microsoft MVP VC++
Site personal | Blog

Abi_Moonbow
Junior
Junior
Posts: 15
Joined: 17 Apr 2013, 11:36
Judet: Argeş

Re: Ajutor la retinerea frunzelor intr-un arbore multicai

Post by Abi_Moonbow » 18 Apr 2013, 11:22

HOPA!!!! Da, ai dreptate... Am facut o greseala de gradinita, dar cred ca din neatentie:) Mersi mult!
Pana acuma puneam asterisk inainte de variabila ( *var ) pentru ca sa vad ca variabila e pointer, dar de acum voi pune tip_de_data* var. :D
:whorship: multumesc!

Post Reply