Zum Inhalt springen

wie erstelle ich eine Baumstruktur?


Audi

Empfohlene Beiträge

Hallo,

ich habe ein Problem, bin dabei einen Datei Parser zu schreiben und möchte die Dateiverknüpfungen aller Dateien die z.B mit der Endung .txt enden

in einer Baumstrucktur darstellen, wie mache ich dass am besten?

Sollte nicht so aufwendig sein nur dass man nachvollziehen kann welche Datei mit welcher verknüpft ist!

danke

Link zu diesem Kommentar
Auf anderen Seiten teilen

Falls du einen TreeView auf der Benutzeroberfläche meinst kommt das ganz darauf an womit bzw. wofür due Entwickelst.

Ich habe keine Benutzeroberfläche, es wird beim Programmstart gefragt in welchem Verzeichnis gesucht werden soll, dann wird gesucht und als nächstes sollte die Ausgabe einer Baumstrucktur erfolgen, wenn es zusammenhänge gibt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Was meinst du mit "Dateiverknüpfung"? Wie soll die Baumstruktur organisiert sein? Von welchen Zusammenhängen sprichst du?

P.S.:

Kein 'c' in Struktur ;)

also es ist so aufgebaut: es werden .pro Dateien gesucht, geöffnet, es wird nach includes geparst (so stehen die dann da: #include(bla bla.pro)) das was in der Klammer der include steht ist eine Verknüpfung zur nächsten .pro usw. diese Dateizusammenhänge sollen dann in einer Baumstrucktur ausgegeben werden.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

naja das hört sich für mich an, dass Du im Grunde immer die Datei und von dort abhängig die "Kind"-Dateien haben willst usw.

Achtung: Das kann eine Endlosschleife in der Rekursion geben , denn es können Zyklen in den Includes entstehen, die Du natürlich passend behandeln musst.

Schreibe Dir eine Klasse "Tree", in der eben ein String für die Daten und ein Zeiger auf weitere Treeobjekte enthalten ist. Dann liest Du den Dateibaum und durchläuft ihn Datei für Datei, liest die Includes, erzeugt einen neuen Tree / Node, packst die Daten rein. Zum Schluss für die Ausgabe traversierst Du den Baum in der passenden Reihenfolge (pre, in, post order). Ich denke mal Du solltest in-order verwenden, beginnend bei dem Wurzelknoten

HTH Phil

Link zu diesem Kommentar
Auf anderen Seiten teilen

Was du da hast, ist nicht zwangsläufig ein Baum.

Beispiel:

a bindet b und c ein

b bindet d ein

c bindet d ein

Das lässt sich nicht als Baum darstellen, weil es mehr als einen "Weg" von a nach d gibt (über b und über c).

Das wäre dann ein ganz normaler Graph (ein Baum ist ein besonderer Graph).

Wenn du garantieren kannst, dass es sich um eine Baumstruktur handelt, kannst du einfach eine struct für eine solche Datei definieren, die einen std::vector derselben struct enthält, in dem die verknüpften Dateien abgelegt sind.

Wenn du keinen Baum hast, musst du anders vorgehen. Ich würde erst mal alle Dateien in einem std::vector anlegen, und dann über eine Liste von Zeigern die Verknüpfungen abbilden.

Die Ausgabe hängt auch stark davon ab, ob das nun wirklich ein Baum ist oder nicht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Was du da hast, ist nicht zwangsläufig ein Baum.

Beispiel:

a bindet b und c ein

b bindet d ein

c bindet d ein

Das lässt sich nicht als Baum darstellen, weil es mehr als einen "Weg" von a nach d gibt (über b und über c).

Das wäre dann ein ganz normaler Graph (ein Baum ist ein besonderer Graph).

Wenn du garantieren kannst, dass es sich um eine Baumstruktur handelt, kannst du einfach eine struct für eine solche Datei definieren, die einen std::vector derselben struct enthält, in dem die verknüpften Dateien abgelegt sind.

Wenn du keinen Baum hast, musst du anders vorgehen. Ich würde erst mal alle Dateien in einem std::vector anlegen, und dann über eine Liste von Zeigern die Verknüpfungen abbilden.

Die Ausgabe hängt auch stark davon ab, ob das nun wirklich ein Baum ist oder nicht.

du hast recht! ist dann kein richtiger Baum wie du oben beschrieben hast!

also ein "Grap"

und wie sollte ich am besten den "Baum" ausgeben?

ohne benutzeroderfläche?

in der kommandozeile ja nicht!?

danke

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...