<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Baumstruktur]]></title><description><![CDATA[<p>Hat jemand da einen guten Link für mich parat? Google spuckt in jedem zweiten Link nur was zu binären Bäumen aus. Mir geht es aber um einen Baum mit n Ästen je Knoten.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/153484/baumstruktur</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Jul 2026 19:46:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/153484.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 17 Jul 2006 15:11:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Baumstruktur on Mon, 17 Jul 2006 15:11:17 GMT]]></title><description><![CDATA[<p>Hat jemand da einen guten Link für mich parat? Google spuckt in jedem zweiten Link nur was zu binären Bäumen aus. Mir geht es aber um einen Baum mit n Ästen je Knoten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1099273</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1099273</guid><dc:creator><![CDATA[UNeverNo]]></dc:creator><pubDate>Mon, 17 Jul 2006 15:11:17 GMT</pubDate></item><item><title><![CDATA[Reply to Baumstruktur on Mon, 17 Jul 2006 16:49:15 GMT]]></title><description><![CDATA[<p>Fütter google mit Bayer-Bäumen.</p>
<p>MfG</p>
<p>GPC</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1099313</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1099313</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Mon, 17 Jul 2006 16:49:15 GMT</pubDate></item><item><title><![CDATA[Reply to Baumstruktur on Mon, 17 Jul 2006 17:22:21 GMT]]></title><description><![CDATA[<p>Mhh das scheint mir auch nicht das richtige zu sein. Da bei mir für jede Ebene die Anzahl der Äste variiert, d.h. n1 != n2<br />
Außerdem scheint der Bayer-Baum eine Sortierung vorzunehmen, die in diesem Sinn von mir nicht erwünscht ist.</p>
<p>Ich brauche einen Baum, der die Struktur einer XML-Datei darstellt ähnlich einem HTML-Dokument <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1099328</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1099328</guid><dc:creator><![CDATA[UNeverNo]]></dc:creator><pubDate>Mon, 17 Jul 2006 17:22:21 GMT</pubDate></item><item><title><![CDATA[Reply to Baumstruktur on Mon, 17 Jul 2006 17:33:47 GMT]]></title><description><![CDATA[<p>UNeverNo schrieb:</p>
<blockquote>
<p>Ich brauche einen Baum, der die Struktur einer XML-Datei darstellt ähnlich einem HTML-Dokument <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
</blockquote>
<p>Wie wär's dann mit irgendeiner XML-Library, die ne DOM-Implementierung hat? Ansonsten halt die übliche Struktur:</p>
<pre><code class="language-cpp">class Node {
  std::vector&lt;Node*&gt; children;
}
</code></pre>
<p>Oder sowas ähnliches.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1099333</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1099333</guid><dc:creator><![CDATA[Jester]]></dc:creator><pubDate>Mon, 17 Jul 2006 17:33:47 GMT</pubDate></item><item><title><![CDATA[Reply to Baumstruktur on Mon, 17 Jul 2006 18:12:14 GMT]]></title><description><![CDATA[<p>Ja, DOM habe ich mir schon mal heruntergeladen, allerdings war mir eine Projektmappe mit 32 Projekten dann doch zuviel des guten für das an sich kleine Problem.</p>
<p>Schöner Code <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Allerdings kann ich damit wenig bis gar nichts anfangen, daher auch meine Frage nach einem Link <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1099353</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1099353</guid><dc:creator><![CDATA[UNeverNo]]></dc:creator><pubDate>Mon, 17 Jul 2006 18:12:14 GMT</pubDate></item><item><title><![CDATA[Reply to Baumstruktur on Tue, 18 Jul 2006 07:52:59 GMT]]></title><description><![CDATA[<p>Naja Bäume mit mehreren Knoten sind B-Bäume oder B*-Bäume (ersteres hab ich mal ausprogrammiert und es war ne scheiß heidenarbeit).</p>
<p>Das mit der xml struktur lesen kannst du dir ja selber schreiben (wobei es GARANTIERT komplizierter ist als ich mir das vorstelle) und dann den Baum nach der Reihe mit den einträgen füllen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1099564</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1099564</guid><dc:creator><![CDATA[DeX3]]></dc:creator><pubDate>Tue, 18 Jul 2006 07:52:59 GMT</pubDate></item><item><title><![CDATA[Reply to Baumstruktur on Tue, 18 Jul 2006 13:48:56 GMT]]></title><description><![CDATA[<p>DeX3 schrieb:</p>
<blockquote>
<p>Naja Bäume mit mehreren Knoten sind B-Bäume oder B*-Bäume (ersteres hab ich mal ausprogrammiert und es war ne scheiß heidenarbeit).</p>
</blockquote>
<p>Ne, umgekehrt. B-Bäume sind Bäume mit mehreren Knoten. Aber nicht jeder Baum mit mehr als zwei Kindern pro Knoten ist gleich ein B-Baum.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/6766">@UNeverNo</a>:</p>
<p>Wieso kannste damit nichts anfangen? Was genau ist daran unklar?<br />
Ansonsten kannste auch mal nach Kompositum googlen (oder ins GOF-Buch schaun). Sowas in der Art wirste wohl brauchen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1099822</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1099822</guid><dc:creator><![CDATA[Jester]]></dc:creator><pubDate>Tue, 18 Jul 2006 13:48:56 GMT</pubDate></item><item><title><![CDATA[Reply to Baumstruktur on Tue, 18 Jul 2006 16:35:48 GMT]]></title><description><![CDATA[<p>Ich habe jetzt mal ein wenig herumversucht. Allerdings wurden mir, als ich eine leere Methode einbinden wollte zwei Fehler gemeldet. Habe sie mal unten aufgeführt.</p>
<p>Ich nutze Dev-CPP.</p>
<pre><code class="language-cpp">#include &lt;list&gt;
#include &lt;string&gt;

using namespace std;

class xmldir
 {
    xmldir* father; //Knoten
    list &lt;xmldir*&gt; children; //Äste
    string name; //Name des Knotens
    string value; //Inhalt des Knotens

    public void insert(string Name, string Value)  //syntax error before `void'
    {
    } //missing ';' before right brace

 };

 int main(void)
 {
     xmldir* xmltree = new xmldir();
     return 0;
 }
</code></pre>
<p>Der Ansatz sollte von der Struktur richtig sein, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1099922</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1099922</guid><dc:creator><![CDATA[UNeverNo]]></dc:creator><pubDate>Tue, 18 Jul 2006 16:35:48 GMT</pubDate></item><item><title><![CDATA[Reply to Baumstruktur on Wed, 19 Jul 2006 05:50:34 GMT]]></title><description><![CDATA[<p>UNeverNo schrieb:</p>
<blockquote>
<p>public void insert(string Name, string Value) //syntax error before `void'<br />
{<br />
} //missing ';' before right brace</p>
</blockquote>
<p>Zu viel Java programmiert. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /><br />
In C++ kommt das public nicht in die Methodendeklaration.</p>
<p>Sieht schonmal nicht schlecht aus. Du solltest Dir allerdings überlegen, ob Du wirklich ne list haben willst um die Kinder zu halten. Da haste halt keinen Indexzugriff und wenn Du vernünftig viele Kinder hast ist Einfügen/Löschen mit dem vector trotz Verschiebens noch schneller. Da aber alles schön private ist sollte sich das auch später noch austauschen lassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1100136</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1100136</guid><dc:creator><![CDATA[Jester]]></dc:creator><pubDate>Wed, 19 Jul 2006 05:50:34 GMT</pubDate></item><item><title><![CDATA[Reply to Baumstruktur on Wed, 19 Jul 2006 11:08:54 GMT]]></title><description><![CDATA[<p>Eher zuviel Java-Beispiele angesehen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Die XML-Dateien, die ich parsen will werden max. 10k groß sein, nichtsdestotrotz ist so ein indizieren natürlich praktisch und man weiss ja nie, wozu man den Parser nochmal gebrauchen kann <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
Vektoren habe ich mir mal kurz angeschaut, die sollten handlebar sein.</p>
<p>Allerdings war Zeiger-Arithmetik schon immer ein Buch mit sieben Siegeln für mich, wäre nett, wenn man mich da ein wenig unterstützen könnte <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Habe es jetzt mal in eine Headerdatei ausgelagert.</p>
<p>xmldir.h</p>
<pre><code class="language-cpp">#include &lt;vector&gt;
#include &lt;string&gt;

using namespace std;lös

class xmldir
{
    xmldir* father; //Knoten
    vector &lt;xmldir*&gt; children; //Äste
    string name; //Name des Knotens
    string value; //Inhalt des Knotens

    public:
        xmldir(void);
        ~xmldir(void);
        void insertNode(string Name, string Value);
        string getInfo(string Name);
        void delAll(void);
};
</code></pre>
<p>xmldir.cpp</p>
<pre><code class="language-cpp">#include &lt;xmldir.h&gt;
#include &lt;vector&gt;
#include &lt;string&gt;

using namespace std;

xmldir::xmldir(void)
{
}

xmldir::~xmldir(void)
{
}        

void xmldir::insertNode(string Name, string Value)
{
}    

string xmldir::getInfo(string Name)
{
}

void xmldir::delAll(void)    
{
}
</code></pre>
<p>main.cpp</p>
<pre><code class="language-cpp">#include &lt;xmldir.h&gt;
#include &lt;vector&gt;
#include &lt;string&gt;

using namespace std;

int main(void)
{
    xmldir* xmltree = new xmldir();
    return 0;
}
</code></pre>
<p>Im Konstruktor müßte ich wohl einen Anker setzen, um mir das oberste Element zu merken, oder?<br />
Im Destruktor müßte das Objekt zerstört werden, was letztlich identisch mit dem DeleteAll ist. Daher kann ich das wohl entfernen?<br />
Mhh beim schreiben muss der aktuelle ast zu einem unterknoten werden.<br />
Beim lesen kann ich mich dann anhand des namens langhangeln, nur halt irgendwie mit zeigern <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1100298</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1100298</guid><dc:creator><![CDATA[UNeverNo]]></dc:creator><pubDate>Wed, 19 Jul 2006 11:08:54 GMT</pubDate></item><item><title><![CDATA[Reply to Baumstruktur on Wed, 19 Jul 2006 17:05:11 GMT]]></title><description><![CDATA[<p>UNeverNo schrieb:</p>
<blockquote>
<p>Allerdings war Zeiger-Arithmetik schon immer ein Buch mit sieben Siegeln für mich, wäre nett, wenn man mich da ein wenig unterstützen könnte <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
</blockquote>
<p>Zeigerarithmetik solltest Du eigentlich nicht brauchen.</p>
<blockquote>
<p>Im Konstruktor müßte ich wohl einen Anker setzen, um mir das oberste Element zu merken, oder?<br />
Im Destruktor müßte das Objekt zerstört werden, was letztlich identisch mit dem DeleteAll ist. Daher kann ich das wohl entfernen?<br />
Mhh beim schreiben muss der aktuelle ast zu einem unterknoten werden.<br />
Beim lesen kann ich mich dann anhand des namens langhangeln, nur halt irgendwie mit zeigern <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
</blockquote>
<p>Das verwirrt mich jetzt auch gerade etwas. Mal langsam. Damit das ganze praktisch benutzbar wird, solltest Du jedem Node mal ne Methode geben, mit der man alle Kinder abfragen kann. Im Prinzip reicht da ne const-Referenz auf den vector mit den Pointern.</p>
<p>Den Zeiger auf den Vaterknoten mußt Du immer dann setzen, wenn der Knoten irgendwo eingehängt wird. Das muß aber nicht unbedingt bei der Konstruktion sein. Ich würde vorschlagen, daß das die Aufgabe des Vaters ist. Wenn Du also einen Knoten einfügst, dann mußt Du ihm mitteilen, wer sein Vater ist.</p>
<p>Allerdings könntest Du Dir das auch sparen, wenn Du möchtest. Du weißt schließlich normalerweise auf welchem Weg Du in einen Tag gekommen bist und kannst diese Information außen mitverwalten. Ich bin mir auch nicht sicher, inwiefern da wirklich Bedarf dafür da ist.</p>
<p>Das Interface würde ich erstmal so einfach wie möglich halten:</p>
<pre><code class="language-cpp">class xmlNode
{
    vector &lt;xmlNode*&gt; children;
    string name; 
    string value;

public:
    xmlNode(string name, string value):name(name), value(value) {}

    ~xmldir() 
    {
      for(size_t i=0; i&lt;children.size(); ++i)
        delete children[i];  
    }

    std::vector&lt;xmlNode*&gt; const&amp; getChildren() { return children; }

    void addNode(xmlNode*node)
    {
      children.push_back(node);
    }

    // vielleicht noch ein insertNode mit Positionsangabe an welcher Stelle 
    // bei den Kindern es eingefügt werden soll.

    void removeNode(xmlNode*node) // in children suchen und entfernen
    void deleteNode(xmlNode*node) // in children suchen, delete und entfernen

    // Methoden zum Zugriff auf die Daten in diesem Node
};
</code></pre>
<p>Zu bessern Benutztung würde ich dann noch einen XmlTree bauen, der intern den root-Node speichert und vielleicht ein paar unterstützende Methoden bereitstellt.</p>
<p>MfG Jester</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1100541</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1100541</guid><dc:creator><![CDATA[Jester]]></dc:creator><pubDate>Wed, 19 Jul 2006 17:05:11 GMT</pubDate></item></channel></rss>