Re: binære træer på FreeBSD

From: Claus Guttesen <none_at_cguttesen--yahoo.dk.lh.bsd-dk.dk>
Date: Sun, 20 Mar 2005 23:22:38 +0100 (CET)
To: devel_at_bsd-dk.dk

> Du mangler en del ting:
>
> sys/tree.h kraever at du definerer en RB_ENTRY i din
> blb_entry. Denne
> indeholder pointere til left og right child, hvis
> jeg husker rigtigt. Maaske
> ogsaa en parent pointer i RB_TREE tilfaeldet (Der er
> nogle optimeringer
> mulige hvis man har parent pointers). Dernaest
> mangler du at konstruere
> prototyper for dit RB_TREE med RB_PROTOTYPE. Du
> mangler ogsaa at konstruere
> selve funktionerne, der laver det haarde arbejde med
> RB_GENERATE. Du mangler
> ogsaa at angive en sammenligningsfunktion for
> blb_entry.
>
> Og hvorfor saa det? Jo, RB_* er makroer af den
> slemme slags, fordi C som
> sprog ikke har nogensomhelst muligheder for at lave
> abstraktion. RB_ENTRY
> ekspanderer som foer sagt til en struktur der kan
> benyttes til at linke
> blb_entry's sammen med. RB_PROTOTYPE ekspanderer til
> prototypefunktionerne
> for et RB_TREE og RB_GENERATE ekspanderer til
> egentlige funktioner. Det er
> en af disse funktioner du mangler naar du forsoeger
> at oversaette.
>
> Bemaerk at dit eksempel har foelgende du har
> overset:
>
> * struct links_entry har en RB_ENTRY makro.
> * links_cmp er en sammenligningsfunktion for struct
> links_entry *
> * der kaldes RB_GENERATE(ltree, links_entry, entry,
> links_cmp);
>
> Saa det er tilbage til arbejdsbordet/editoren med
> kodeeksemplet indtil du
> lige har slaaet lidt mere paa det med din forhammer
> ;)

Mange tak for de gode guldkorn! Jeg havde i det
eksempel jeg limede ind i mailen (snork), taget en
senere version af test-programmet, som ikke hverken
var halv eller helt færdig.

Det første udkast havde RB_ENTRY i struct blb_entry,
men da det fejlede under oversættelsen, tog jeg det
ud, for at se om det var den som triggede fejlen
(hvilket jo også afslører mit niveau ;-).

Udfra dine anvisninger tilføjede jeg funktionen
blb_cmp og RB_GENERATE(blb_tree, blb_entry, entry,
blb_cmp).

Nu oversætter den uden problemer, og næste skridt
bliver at se hvordan jeg lægger informationer korrekt
ind.

Hilsen
Claus
Received on Sun 20 Mar 2005 - 23:22:40 CET

This archive was generated by hypermail 2.2.0 : Wed 27 Mar 2013 - 10:40:20 CET