AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Baum: Pfad ausgeben

Offene Frage von "P_P"
Ein Thema von P_P · begonnen am 5. Apr 2010 · letzter Beitrag vom 5. Apr 2010
 
P_P

Registriert seit: 5. Apr 2010
7 Beiträge
 
#1

Baum: Pfad ausgeben

  Alt 5. Apr 2010, 18:14
Hallo Forum!
Ich bin neu hier und habe auch gleich ein Problem...
Ich habe wie folgt einen Baum deklariert:
Delphi-Quellcode:
TYPE TPtr = ^TNode;

TNode = RECORD

      i: integer;

      c: string[2];

      left, right: TPtr;

END;
Desweiteren habe ich einen Typ TNodesArray deklariert:
TNodesArray = ARRAY OF TNode; Dann baue ich aus einem solchen Array einen Baum:

Delphi-Quellcode:
PROCEDURE HuffTreeBauen(var BlaArray: TNodesArray; var root: TNode);
VAR node, node2: TPtr;

    hs: string[2];

    i: integer;

BEGIN

  Sort(BlaArray);

   WHILE length(BlaArray) > 1 DO

   BEGIN

      new(node);

      node^ := BlaArray[0];

                new(node2);

                node2^ := BlaArray[1];

                BlaArray[0].i := BlaArray[0].i + BlaArray[1].i;

                BlaArray[0].left := node;

                BlaArray[1].right := node2;

                Test(BlaArray[0], 1);

      FOR i := 1 TO length(BlaArray) - 2 DO

         BlaArray[i] := BlaArray[i + 1];

      SetLength(BlaArray, (length(BlaArray) - 1));

      Sort(BlaArray);

   END;

   root := BlaArray[0];

END;
... um dann den Pfad zu einem Zeichen als Folge von 0en und 1en ausgeben zu können:
Delphi-Quellcode:
FUNCTION Pfad(root: TPtr; x: char): string;
BEGIN
   found := FALSE;
   IF root^.c[1] <> x THEN
   BEGIN
        IF ((root^.left <> NIL)) THEN
                  BEGIN
                    result := '0' + Pfad(root^.left, x);
                    IF ((NOT found){  AND (root^.right <> NIL)}) THEN
                       result := '1' + Pfad(root^.right, x);
      END;
  END
  ELSE
  BEGIN
      result := '';
      found := TRUE;
  END;
END;
Und hier kommt mein Problem:
Wenn ich den auskommentierten Teil in der letzten Funktion weglasse, krieg ich ne Access Violation, wenn der Teil als Bedingung dabeibleibt, wird die Anweisung nie ausgeführt...
Ich bekomme immer nur '00' oder '000' oder dergleichen raus...

Hoffentlich kann mir hier jemand helfen!

Liebe Grüße,
Peter
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz