Ü2 A4 Binärbaum

Drudge
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 158
Registriert: 13. Apr 2004 20:17

Ü2 A4 Binärbaum

Beitrag von Drudge » 2. Nov 2006 14:51

Moin!

Kann es sein, dass der Baum den wir in Scheme umsetzten sollen, nur vom Knoten in die Blätter verlinkt sein kann? Ich wollte intuitiv gleich in der Datenstruktur sowohl Nachfolger, als auch Vaterknoten speichern. Als ich bei der A4.2 dann den Baum ralisieren wollte, ist mir aufgefallen, dass ich dabei mit Scheme auf ein Problem gestoßen bin.

Code: Alles auswählen

;; Data Analysis and Definition:
(define-struct binbaum (dad l_child r_child content))
;; A binbaum is a structure: (make-binbaum binbaum_a binbaum_b binbaum_c Knoten)
;; where the first three parameter, binbaum_a, binbaum_b and binbaum_c, is a binbaum or empty
;; and the last parameter is a symbol, a number or empty.

(define b1(make-binbaum empty b2 b3 5))
(define b2(make-binbaum b1 b4 b5 3))
(define b3(make-binbaum b1 b6 b7 8))
(define b4(make-binbaum b2 empty empty 1))
(define b5(make-binbaum b2 empty empty 4))
(define b6(make-binbaum b3 empty empty 7))
(define b7(make-binbaum b3 empty empty 9))

Ich erhalte immer den Fehler: reference to an identifier before its definition: b2
Nur umstellen der Definitionen würde aber auch nicht helfen, da ja dann der Vaterknoten noch nicht bekannt wäre. Habt ihr die Aufgabe ohne Referenz auf den Vaterknoten gelöst? Ich bin in der Übung nur bis A3 gekommen und wollte daher mal wissen, ob mir hier jemand helfen kann.

Danke schonmal im Vorraus!

Benutzeravatar
E.d.u.
Nerd
Nerd
Beiträge: 633
Registriert: 3. Feb 2004 17:01
Wohnort: Darmstadt
Kontaktdaten:

Beitrag von E.d.u. » 2. Nov 2006 14:58

es reicht wenn du für jeden Knoten seine Children speicherst, um die Prozedur rekursiv aufzurufen.
Du brauchst die Eltern zu speichern wenn du von "unten" nach "oben" willst aber das brauchen wir nicht oder ?

Drudge
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 158
Registriert: 13. Apr 2004 20:17

Beitrag von Drudge » 2. Nov 2006 15:04

Nö, brauchen wir wohl nicht, aber irgendwie hätte ichs mit Link zum Vaterknoten ganz nett gefunden. Aber wenn es so nicht gedacht war, dann weiß ich jetzt wenigstens wie ich die Aufgabe lösen muss.

Danke!

SebFreutel
Computerversteher
Computerversteher
Beiträge: 317
Registriert: 30. Okt 2006 21:54

Beitrag von SebFreutel » 2. Nov 2006 23:16

Drudge hat geschrieben:Nö, brauchen wir wohl nicht, aber irgendwie hätte ichs mit Link zum Vaterknoten ganz nett gefunden.
Wie war das noch? "Iterative Verfeinerung von Programmen" (Folie T3-55ff), also nicht nach Lust und Laune ungenutzte Features implementieren, sondern nach und nach das was man braucht. (Wenn ich den Sinn dieser Folien richtig verstanden habe...) :roll:

Drudge
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 158
Registriert: 13. Apr 2004 20:17

Beitrag von Drudge » 2. Nov 2006 23:32

Liegt daran, dass es schwer ist alles zu vergessen, was man schon an Datenstrukturen kennt. Und wer schon einmal GDI2 gehört hat und die Praktika etc. gemacht hat, der kennt sich bei Baumstrukturen eben ganz gut aus. Dass es da bei Scheme in unserer derzeitigen Ausbaustufe Probleme gibt mag ja sein, aber daran muss man eben ersteinmal denken... rein intuitiv bin ich eben auf das gekommen, was ich bisher gelernt habe.


Und sowas wie "iterative Verfeinerung" ist ja ganz toll, nur finde ich es sehr schwer mich daran zu gewöhnen. Meine übliche Herangehensweise hat sich bei mir schon recht fest eingeprägt und es ist nicht leicht sich davon so von heute auf morgen zu trennen.

Benutzeravatar
marlic
Computerversteher
Computerversteher
Beiträge: 365
Registriert: 5. Okt 2006 11:09
Wohnort: Dietesheim

Beitrag von marlic » 3. Nov 2006 11:04

Nun, in Scheme wäre das eine Unendliche Rekursion, wenn du sowohl die Parents als auch die Children angibst. Ohne OO geht das wohl nicht ;)
"Copy & Passed"

Wahlspruch der Plagiatoren

Drudge
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 158
Registriert: 13. Apr 2004 20:17

Beitrag von Drudge » 3. Nov 2006 15:42

Ich denke schon, dass es gehen würde. Man müsste allerdings zuerst alle Objekte ohne Verbindung zueinander erstellen und dann den bestehenden Objekten die Verbindungen zuweisen. ... könnte mit diesem "set"-Befehl funktionieren. Aber soweit sind wir ja noch nicht.

gelo
Erstie
Erstie
Beiträge: 14
Registriert: 16. Dez 2004 17:20

Beitrag von gelo » 4. Nov 2006 16:58

Da wir die Sprache auf Anfänger mit Listen-Abkürzungen stellen sollen,
heisst das, dass wir den befehl "begin" nich verwenden dürfen?
Coden der Barbar

Benutzeravatar
bruse
Kernelcompilierer
Kernelcompilierer
Beiträge: 412
Registriert: 2. Aug 2006 22:42

Beitrag von bruse » 5. Nov 2006 12:51

Im Prinzip: Ja.
Wenn du damit das Lernziel einer Aufgabenstellung umgehst, bekommst du auf jeden Fall Punkte abgezogen. Ansonsten hängt das auch ein bischen von deinem Tutor ab. Da es auf jeden Fall eineLösung ohne "begin" gibt, würde ich auch nach dieser suchen ;-)
Un hombre de frente a una ventana
Súper lúcida la mirada
Recorre el paisaje y no,
no es su interior, es luna.

Antworten

Zurück zu „Archiv“