Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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.

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.

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

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.

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

Du könntest eine DOT-Datei erstellen und das ganze dann durch Graphviz jagen, um beispielsweise eine Bitmapdatei daraus zu machen.

ok so mache ich es dann! mal schauen wie es dann aussiet;)

ok so mache ich es dann! mal schauen wie es dann aussiet;)

ich habs bissel einfacher gestaltet über XML

danke allen für die Hilfe!!!

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.