Op dit moment ben ik me aan het verdiepen in data structuren en algoritmen en de talen die ik gebruik zijn C++ en Java. Echter het boek gebruikt Pascal als taal. In de meeste gevallen zijn de Pascal algoritmen 1 op 1 om te schrijven naar C++/Java, totdat er in het boek recursie gebruikt wordt.
Het probleem is dat als in een functie geheugen gereserveerd wordt, deze operatie wordt opgeheven als de functie wordt beeindigd. Voorbeeld
Aanroep
Ik begrijp wel waarom het niet werkt, dus dat is de vraag niet.
Als in het boek recursie wordt gebruikt, wordt het wel op bovenstaande manier gedaan, 1 op 1 vertaalt ziet een functie uit het boek in C++ er dan zo uit:
De vraag is hoe kan ik dit op een zo mooi mogelijke manier dit soort functies van Pascal naar C++ vertalen?
Het probleem is dat als in een functie geheugen gereserveerd wordt, deze operatie wordt opgeheven als de functie wordt beeindigd. Voorbeeld
code:
1
2
3
| void f(Tree *p)
{ p=new Tree();
} |
Aanroep
code:
1
2
3
4
5
| int main(void)
{ Tree p=null;
f(p);
f.value=10 //zal niet werken
} |
Ik begrijp wel waarom het niet werkt, dus dat is de vraag niet.
Als in het boek recursie wordt gebruikt, wordt het wel op bovenstaande manier gedaan, 1 op 1 vertaalt ziet een functie uit het boek in C++ er dan zo uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
| void insert(int a, Tree *p)
{ if (p==NULL)
{ p=new Tree();
p->w=a;
p->l=NULL;
p->r=NULL;
}
else if (a<p->w)
insert(a,p->l);
else if (a>p->w)
insert(a, p->r);
} |
De vraag is hoe kan ik dit op een zo mooi mogelijke manier dit soort functies van Pascal naar C++ vertalen?