<?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[Eigener Iterator für Baumstruktur?]]></title><description><![CDATA[<p>hab eine Klasse Node welche wieder Node enthähkt und diese Wiederrum.</p>
<p>Die letzten Knoten (Blätter) des willkürlichen strukturierten Baumes solle nacheinadner travestiert werden, und dies möchte ich gerne als eigener Iterator umsetzen.. geht sowas? Hat jemand gute Ansätze?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/185399/eigener-iterator-für-baumstruktur</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 03:20:17 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/185399.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 25 Jun 2007 09:49:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Eigener Iterator für Baumstruktur? on Mon, 25 Jun 2007 09:49:04 GMT]]></title><description><![CDATA[<p>hab eine Klasse Node welche wieder Node enthähkt und diese Wiederrum.</p>
<p>Die letzten Knoten (Blätter) des willkürlichen strukturierten Baumes solle nacheinadner travestiert werden, und dies möchte ich gerne als eigener Iterator umsetzen.. geht sowas? Hat jemand gute Ansätze?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1313208</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313208</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Mon, 25 Jun 2007 09:49:04 GMT</pubDate></item><item><title><![CDATA[Reply to Eigener Iterator für Baumstruktur? on Mon, 25 Jun 2007 11:56:59 GMT]]></title><description><![CDATA[<p>es gibt verschiedene möglichkeiten</p>
<p>du kannst dich z.B. von ast zu ast hangeln oder stacks aufbauen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1313270</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313270</guid><dc:creator><![CDATA[ronny]]></dc:creator><pubDate>Mon, 25 Jun 2007 11:56:59 GMT</pubDate></item><item><title><![CDATA[Reply to Eigener Iterator für Baumstruktur? on Mon, 25 Jun 2007 12:02:26 GMT]]></title><description><![CDATA[<p>kannst du mir das näch erleutern?</p>
<p>ich habe mir überlegt beim erzeugen des iterator Objekts der baumstrukturklasse den baum rekursiv durchkaufen und temporär die refernez der blätter des baumes zu speichern... und so travestrien?</p>
<p>Ich muss ja praktitsch den baum erst durchlaufen kann mir ja kein zustand im rekusiven zustand merken</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1313274</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313274</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Mon, 25 Jun 2007 12:02:26 GMT</pubDate></item><item><title><![CDATA[Reply to Eigener Iterator für Baumstruktur? on Mon, 25 Jun 2007 12:10:22 GMT]]></title><description><![CDATA[<p>du kannst grundsätzlich von einem blatt zum nächsten auf der selben ebene wandern</p>
<p>du kannst grundsätzlich bein letzten element einer ebene zum übergeordneten wandern, und du kannst bei jedem element auf eines der unterelemente wandern</p>
<p>*edit*</p>
<p>das bedeutet - deine position ist dein zustand</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1313279</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313279</guid><dc:creator><![CDATA[ronny]]></dc:creator><pubDate>Mon, 25 Jun 2007 12:10:22 GMT</pubDate></item><item><title><![CDATA[Reply to Eigener Iterator für Baumstruktur? on Mon, 25 Jun 2007 12:22:47 GMT]]></title><description><![CDATA[<p>hmm aber wenn ich nun meinen itereator wie den iterator des std::Vector verwendet will in ein for -schleife, dann muss ich ja jedes mal zu dem vorigen zsutanden der rekursion zurückspringen.. oder meinst du den zsutand als referenz merken?? stimmt eigenlich</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1313295</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313295</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Mon, 25 Jun 2007 12:22:47 GMT</pubDate></item><item><title><![CDATA[Reply to Eigener Iterator für Baumstruktur? on Mon, 25 Jun 2007 12:36:43 GMT]]></title><description><![CDATA[<p>Wie ronny schon sagte - der einzige &quot;Zustand&quot;, den du brauchst, ist deine Position im Baum (und die Verzweigungen, die vom aktuellen Knoten ausgehen). Wenn der aktuelle Knoten einen rechten Bruder hat, springst du zu dem, andernfalls so weit wie nötig den Baum nach oben, zum rechten &quot;Onkel&quot; und wieder bis ganz nach unten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1313310</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313310</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 25 Jun 2007 12:36:43 GMT</pubDate></item><item><title><![CDATA[Reply to Eigener Iterator für Baumstruktur? on Mon, 25 Jun 2007 12:46:52 GMT]]></title><description><![CDATA[<p>Dazu brauchst du Rückwärtsverkettungen. Das ist nicht ganz selbstverständlich, dass man sowas hat. Für eine passive Iteratorabstraktion wie in der STL braucht man halt irgendeine Form von Overhead, man kann sich aussuchen, ob man die im Baum unterbringt oder in den Iteratoren, aber ohne gehts nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1313319</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313319</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Mon, 25 Jun 2007 12:46:52 GMT</pubDate></item><item><title><![CDATA[Reply to Eigener Iterator für Baumstruktur? on Mon, 25 Jun 2007 13:05:13 GMT]]></title><description><![CDATA[<p>da ich ja nur die untersten knoten de Baumes also die blätter iterieren möchste, ist es dann nich elegant wenn ich erst den baum auf alle blätter scane, und mir die referenzen der blätter wie sie nacheinader gescannt werden merke, und die elemten über die temporäre list iteriere?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1313326</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313326</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Mon, 25 Jun 2007 13:05:13 GMT</pubDate></item><item><title><![CDATA[Reply to Eigener Iterator für Baumstruktur? on Mon, 25 Jun 2007 13:11:02 GMT]]></title><description><![CDATA[<p>Wer sagt denn, daß du das mußt:</p>
<pre><code class="language-cpp">class node
{
  node* first_son,father,brother;
  ...
}

node* next_node(node* pos)
{
  if(pos-&gt;brother!=NULL)return pos-&gt;brother;

  while(pos-&gt;brother==NULL) pos=pos-&gt;father;    //Baum hochklettern
  pos=pos-&gt;brother;                             //Übergang zum (Groß)Onkel
  while(pos-&gt;first_son!=NULL) pos=pos-&gt;fist_son;//Baum wieder runterklettern
  return pos;
}
</code></pre>
<p>(das kommt raus, wenn man meine Erklärungen von oben in Programmcode umsetzt <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="😉"
    /> Fehlerkontrollen etc überlasse ich dir als Übung)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1313332</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313332</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 25 Jun 2007 13:11:02 GMT</pubDate></item><item><title><![CDATA[Reply to Eigener Iterator für Baumstruktur? on Mon, 25 Jun 2007 17:30:10 GMT]]></title><description><![CDATA[<p>d.h. ich bruache keine vector oder list? nur über pointer</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1313557</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313557</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Mon, 25 Jun 2007 17:30:10 GMT</pubDate></item><item><title><![CDATA[Reply to Eigener Iterator für Baumstruktur? on Mon, 25 Jun 2007 22:01:29 GMT]]></title><description><![CDATA[<p>ja, nur über pointer. alles andere wäre auch wohl ziemlich langsam.<br />
du willst ja wohl nicht für jeden iterator gleich dynamisch speicher anfordern, oder?<br />
ich meine es ist schon schön wenn man iteratoren kopieren kann ohne sich gleich gedanken machen zu müssen dass ein bad_alloc rausfliegt könnte etc. ...<br />
(abgesehen davon dass es eben auch schrecklich langsam wäre)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1313707</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313707</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 25 Jun 2007 22:01:29 GMT</pubDate></item><item><title><![CDATA[Reply to Eigener Iterator für Baumstruktur? on Tue, 26 Jun 2007 04:00:39 GMT]]></title><description><![CDATA[<p>ne ich meine, die knoten de baumes haben ja mehrer unterknoten, und die unterknoten sind ja als list/vector in den entsprechenden knoten angelegt.</p>
<p>Die anzahl der unterknoten (Kinder) eine Vater knoten ist variabel, wobei ein knoten und ein nur ein Vater haben kann (kein GRapph) wie soll das mit pointer dan ngehen!</p>
<p>Sorry Jungs.. aber ich steh immer noch aufm schlauch... komm grad bischen Dumm vor <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1313728</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313728</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Tue, 26 Jun 2007 04:00:39 GMT</pubDate></item><item><title><![CDATA[Reply to Eigener Iterator für Baumstruktur? on Tue, 26 Jun 2007 04:23:34 GMT]]></title><description><![CDATA[<p>r0nny schrieb:</p>
<blockquote>
<p>es gibt verschiedene möglichkeiten</p>
<p>du kannst dich z.B. von ast zu ast hangeln oder stacks aufbauen</p>
</blockquote>
<p>Tarzan kann das auch gut, von Liane zu Liane und so.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1313729</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313729</guid><dc:creator><![CDATA[Ich Tarzan]]></dc:creator><pubDate>Tue, 26 Jun 2007 04:23:34 GMT</pubDate></item><item><title><![CDATA[Reply to Eigener Iterator für Baumstruktur? on Tue, 26 Jun 2007 06:41:40 GMT]]></title><description><![CDATA[<p>Her mein Code (noch in den Kinderschuhen) würde mich freuen wenn ihr VErbesserungsvorschläge, Optimierung hinsichtlich Performance, und Kritik geben könntet..</p>
<pre><code class="language-cpp">#pragma once

// CAllocation command target

class CAllocation : public CObject{

	//Notwendige Pointer
	CAllocation *m_pFather, *m_pBrother, *m_pFirst_Son;
	//DEbug Name 
	CString m_strName;
public:

	class iterator{

		CAllocation *m_pIterPos;
	public:

		//Konstruktor
		iterator(CAllocation *pPos): m_pIterPos(pPos){}

		//Iteration ein Knoten nach vorne
		void operator++(){

			//Baum nach unten klettern
			if(m_pIterPos-&gt;m_pFirst_Son!=NULL)
				m_pIterPos= m_pIterPos-&gt;m_pFirst_Son;
			else if(m_pIterPos-&gt;m_pBrother!=NULL)
				m_pIterPos= m_pIterPos-&gt;m_pBrother;
			else{
				//Baum hochklettern
				CAllocation *p= m_pIterPos-&gt;m_pFather-&gt;m_pBrother;
				while(m_pIterPos-&gt;m_pFather-&gt;m_pBrother==NULL &amp;&amp; m_pIterPos!=NULL)
					m_pIterPos=m_pIterPos-&gt;m_pFather;
				if(m_pIterPos==NULL)
					return;
				m_pIterPos=m_pIterPos-&gt;m_pFather-&gt;m_pBrother;
			}
		}

		//Aktueller Knoten an Iteration
		CAllocation* operator-&gt;() const {
			return m_pIterPos;		
		}

		CAllocation* operator*() const { 
			return m_pIterPos;	
		}

		bool operator!=(const CAllocation *pOpp) const {
			return m_pIterPos!=pOpp;
		}

	};

	//Default Konstruktor
	CAllocation(CString strName) :	m_pFather(NULL),
									m_pBrother(NULL),
									m_pFirst_Son(NULL),
									m_strName(strName){

	}

	//Konstruktor
	CAllocation(CAllocation *pFather,CString strName):	m_pFather(pFather), 
														m_pBrother(NULL), 
														m_pFirst_Son(NULL),
														m_strName(strName){

		ASSERT(m_pFather!= NULL);

		//AlleBrüder des Vaters druchlaufen und diesen Knoten als leter Bruder anhängen!
		CAllocation *pChilds= m_pFather-&gt;m_pFirst_Son;

		//Wenn Vater keine Kinder hat dann diese Knoten als Erster Sohn definieren, sonst als letzter Bruder.
		if(pChilds==NULL)
			m_pFather-&gt;m_pFirst_Son= this;
		else{	
			for(; pChilds-&gt;m_pBrother!= NULL; pChilds= pChilds-&gt;m_pBrother);
			pChilds-&gt;m_pBrother= this;
		}
	}

	//Destruktor
	virtual ~CAllocation(){

		//Zuerst Knoten aus Baum struktur ausgliedern
		CAllocation *pFather= this-&gt;m_pFather;
		if(pFather!=NULL){
			CAllocation *pChilds= pFather-&gt;m_pFirst_Son;
			//Dieser Knoten ist das erste Kind, also daszweite Kind als erstes Kind des Vater setzen
			if(pChilds==this)
				pFather-&gt;m_pFirst_Son= pChilds-&gt;m_pBrother;
			else{
				while(pChilds-&gt;m_pBrother!= this)
					pChilds= pChilds-&gt;m_pBrother;
				//Knoten in Childliste ausketten
				pChilds-&gt;m_pBrother= pChilds-&gt;m_pBrother-&gt;m_pBrother;
			}
		}
		//Ab hier steht der Knoten alleine, und kann samt unterknoten gellöscht werden
		CAllocation::iterator it= this;

		while(this != this-&gt;end()){
			CAllocation *p = (*it);
			++it;
			delete p;
		}
		// Iterator verwenden!!

	}

	void TRACE_Debug(){

		CAllocation::iterator it= this;
		UINT iCounter=0;
		while(it != this-&gt;end()){
			printf(&quot;Nr %2i \t NodeName %s \n&quot;,iCounter,(*it)-&gt;m_strName);
			++it;
			iCounter++;
		}
		printf(&quot;Nr %2i \t NodeName %s \n&quot;,iCounter,(*it)-&gt;m_strName);
		//for(CAllocation::iterator it= this,int i=0; it != this-&gt;end() ; ++it,++i)
		//	printf(&quot;Nr %2i \t NodeName %s \n&quot;,i,(*it)-&gt;m_strName);

	}

	UINT GetChildsCount(){
		UINT iCounter=0;
		for(CAllocation *pChilds= m_pFirst_Son; pChilds-&gt;m_pBrother!= NULL; pChilds= pChilds-&gt;m_pBrother, iCounter++);
		return iCounter;
	}

	CAllocation* begin(){
		//Von jedem Kind Knoten aus die Wurzez bzw. oberste Vater ermitteln
		CAllocation *pGrandfather= m_pFather;
		for(; pGrandfather!= NULL; pGrandfather= pGrandfather-&gt;m_pFather);
		return pGrandfather;
	}

	CAllocation* end(){

		CAllocation *pChilds= this;
		while(1){
				//Brüder für diesen Knoten durchlaufen
				for(; pChilds-&gt;m_pBrother!= NULL; pChilds= pChilds-&gt;m_pBrother);
				//Eine ebene des letzen Kindes (Bruders) nach unten steigen
				if(pChilds-&gt;m_pFirst_Son==NULL)
					break;
				pChilds=pChilds-&gt;m_pFirst_Son;
		}
		return pChilds;
	}
};
</code></pre>
<p>Danke im Vorraus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1313751</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313751</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Tue, 26 Jun 2007 06:41:40 GMT</pubDate></item></channel></rss>