<?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[list - zeiger auf list.begin()]]></title><description><![CDATA[<p>Tag auch, bin noch relativ neu in c++, wollte aber die, im unterricht gegebene, aufgabenstellung mit dieser Sprache zu lösen versuchen.<br />
Ersteinmal etwas zur Aufgabenstellung:<br />
Es soll eine art binärer Suchbaum erstellt werden.<br />
Jedes Element ist eine Struktur nach folgendem Muster:</p>
<pre><code>struct Node{
	int wert;
	Node* left;
	Node* right;
	Node* parent;

	Node(){
		wert  = null;
		left  = null;
		right = null;
		parent= null;
	}

};
</code></pre>
<p>parent zeigt auf ein übergeordnetes Element, left auf ein element mit einem kleineren wert und right auf ein element mit einem größeren wert. für left und right ist das element das auf diese zeigt, das parent.</p>
<p>In einer weiteren Klasse sollen nun Funktionen wie search, insert und delete erstellt werden. search ist ansich fertig, es fehlt nur ein insert um search auch testen zu können, aber genau beim insert komme ich nicht weiter.</p>
<p>Die Klasse sieht so aus:</p>
<pre><code>class BinaryTree{
private:
	list&lt;Node&gt; nodes;
	Node* nodPos;

public:

	BinaryTree(){
		Node nodNull;
		nodPos = &amp;nodNull;
	}

	bool insert(int newValue){

		if(nodes.size() == 0){
			Node nodRoot;
			nodRoot.wert = newValue;
			nodes.push_back(nodRoot);
			nodPos = nodes.begin();
		}
		else{

		}
		return true;
	}
};
</code></pre>
<p>Mithilfe von List wollte ich eine Menge von Node-Objekten lagern.<br />
nodPos ist ein Zeiger der auf die Adresse des gerade benutzen Nodes zeigt sein.<br />
Das erste Node das erstellt wird, ist ein Root Node mit einem null-Node als Parent. Auf dieses Node sollte nodPos zu beginn zeigen, allerdings funktioniert das ganze nicht so recht wie ich es mir vorgestellt habe. nodes.beginn() liefert doch theoretisch einen Zeiger zum ersten Node, oder nicht? Jedenfalls wollte ich, das nodPos auf das eben erstellte Objekt in der Liste zeigt.<br />
Es geht zwar, dass ich einem Node Objekt *nodes.begin() zuweise, aber wenn ich dann einen Zeiger auf dieses neue Node Objekt setze, zeigt es auf eine anderes Element als auf das in der Liste, oder?</p>
<p>Folgende Fehlermeldung wird für die Zeile nodPos = nodes.begin(); ausgegeben:</p>
<blockquote>
<p>error C2440: '=': 'std::list&lt;_Ty&gt;::_Iterator&lt;_Secure_validation&gt;' kann nicht in 'Node *' konvertiert werden</p>
</blockquote>
<p>Da ich noch etwas Probleme mit Zeigern habe habe ich auch versucht, ein * oder &amp; vor nodes.begin() zu setzen, hat aber auch nicht geholfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/149223/list-zeiger-auf-list-begin</link><generator>RSS for Node</generator><lastBuildDate>Sat, 05 Sep 2026 05:27:28 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/149223.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 03 Jun 2006 14:57:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to list - zeiger auf list.begin() on Sat, 03 Jun 2006 14:57:35 GMT]]></title><description><![CDATA[<p>Tag auch, bin noch relativ neu in c++, wollte aber die, im unterricht gegebene, aufgabenstellung mit dieser Sprache zu lösen versuchen.<br />
Ersteinmal etwas zur Aufgabenstellung:<br />
Es soll eine art binärer Suchbaum erstellt werden.<br />
Jedes Element ist eine Struktur nach folgendem Muster:</p>
<pre><code>struct Node{
	int wert;
	Node* left;
	Node* right;
	Node* parent;

	Node(){
		wert  = null;
		left  = null;
		right = null;
		parent= null;
	}

};
</code></pre>
<p>parent zeigt auf ein übergeordnetes Element, left auf ein element mit einem kleineren wert und right auf ein element mit einem größeren wert. für left und right ist das element das auf diese zeigt, das parent.</p>
<p>In einer weiteren Klasse sollen nun Funktionen wie search, insert und delete erstellt werden. search ist ansich fertig, es fehlt nur ein insert um search auch testen zu können, aber genau beim insert komme ich nicht weiter.</p>
<p>Die Klasse sieht so aus:</p>
<pre><code>class BinaryTree{
private:
	list&lt;Node&gt; nodes;
	Node* nodPos;

public:

	BinaryTree(){
		Node nodNull;
		nodPos = &amp;nodNull;
	}

	bool insert(int newValue){

		if(nodes.size() == 0){
			Node nodRoot;
			nodRoot.wert = newValue;
			nodes.push_back(nodRoot);
			nodPos = nodes.begin();
		}
		else{

		}
		return true;
	}
};
</code></pre>
<p>Mithilfe von List wollte ich eine Menge von Node-Objekten lagern.<br />
nodPos ist ein Zeiger der auf die Adresse des gerade benutzen Nodes zeigt sein.<br />
Das erste Node das erstellt wird, ist ein Root Node mit einem null-Node als Parent. Auf dieses Node sollte nodPos zu beginn zeigen, allerdings funktioniert das ganze nicht so recht wie ich es mir vorgestellt habe. nodes.beginn() liefert doch theoretisch einen Zeiger zum ersten Node, oder nicht? Jedenfalls wollte ich, das nodPos auf das eben erstellte Objekt in der Liste zeigt.<br />
Es geht zwar, dass ich einem Node Objekt *nodes.begin() zuweise, aber wenn ich dann einen Zeiger auf dieses neue Node Objekt setze, zeigt es auf eine anderes Element als auf das in der Liste, oder?</p>
<p>Folgende Fehlermeldung wird für die Zeile nodPos = nodes.begin(); ausgegeben:</p>
<blockquote>
<p>error C2440: '=': 'std::list&lt;_Ty&gt;::_Iterator&lt;_Secure_validation&gt;' kann nicht in 'Node *' konvertiert werden</p>
</blockquote>
<p>Da ich noch etwas Probleme mit Zeigern habe habe ich auch versucht, ein * oder &amp; vor nodes.begin() zu setzen, hat aber auch nicht geholfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1070738</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1070738</guid><dc:creator><![CDATA[Nudel]]></dc:creator><pubDate>Sat, 03 Jun 2006 14:57:35 GMT</pubDate></item><item><title><![CDATA[Reply to list - zeiger auf list.begin() on Sat, 03 Jun 2006 15:12:19 GMT]]></title><description><![CDATA[<p>Hallo Nudel</p>
<p>Nodes.begin(); liefert keinen Zeiger, sondern einen Iterator.<br />
Den musst du erst dereferenzieren um dein Objekt zu erhalten.</p>
<pre><code class="language-cpp">(*nodes.begin());
</code></pre>
<p>nun hast du ein Node-Objekt.<br />
Willst du einen Zeiger darauf, musst du die Adresse übergeben mit &amp;</p>
<pre><code class="language-cpp">nodPos=&amp;(*nodes.begin());
</code></pre>
<p>Übrigens fügst du mit push_back() am Ende <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /> ein, also bräuchtest du nodes.end()-1 für das zuletzt eingefügte Element.</p>
<p>(Hoffe das stimmt so, bin selber noch nicht so bewandert)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1070741</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1070741</guid><dc:creator><![CDATA[Buena Vista]]></dc:creator><pubDate>Sat, 03 Jun 2006 15:12:19 GMT</pubDate></item><item><title><![CDATA[Reply to list - zeiger auf list.begin() on Sat, 03 Jun 2006 15:16:08 GMT]]></title><description><![CDATA[<p>Das Ganze ist ohnehin fürn Arsch <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 />
Es ist ganz bestimmt nicht Sinn und Zweck eines Binärbaumes die Knoten in ner Liste zu speichern. :p</p>
<p>Gruss Spacelord</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1070747</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1070747</guid><dc:creator><![CDATA[Spacelord]]></dc:creator><pubDate>Sat, 03 Jun 2006 15:16:08 GMT</pubDate></item><item><title><![CDATA[Reply to list - zeiger auf list.begin() on Sat, 03 Jun 2006 15:22:24 GMT]]></title><description><![CDATA[<p>Danke dir, hat funktioniert. <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><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/198">@Spacelord</a><br />
Kann sein, kenn mich mit Binärbäumen nicht nicht besonders gut aus. ^^<br />
Nur in was sollte ich sonst beliebig viele Node-Objekte speichern? Wenn ich das ganze als vector speichere bzw als Array, scheint die Aufgabenstellung nicht mehr besonders viel Sinn zu machen, da sich alles leicht über den index anstatt den Node Attributen ansprechen lässt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1070751</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1070751</guid><dc:creator><![CDATA[Nudel]]></dc:creator><pubDate>Sat, 03 Jun 2006 15:22:24 GMT</pubDate></item><item><title><![CDATA[Reply to list - zeiger auf list.begin() on Sat, 03 Jun 2006 15:25:41 GMT]]></title><description><![CDATA[<p>Hmm<br />
Eigentlich brauchst du nur den Root zu speichern, und von da kannst du den Baum hoch klettern zu jedem einzelnen Node.<br />
Ich dachte das wär der Sinn von Bäumen? Spacelord was meinst du?</p>
<p>[edit]typos[/edit]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1070754</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1070754</guid><dc:creator><![CDATA[Buena Vista]]></dc:creator><pubDate>Sat, 03 Jun 2006 15:25:41 GMT</pubDate></item><item><title><![CDATA[Reply to list - zeiger auf list.begin() on Sat, 03 Jun 2006 15:45:49 GMT]]></title><description><![CDATA[<p>Ein Baum ist eine rekursive Struktur.<br />
Also ist ein Baum vom Prinzip her erstmal nur der Kopfknoten.<br />
Dieser verweist dann wiederum auf seine Kinder(Teilbäume) und diese wieder auf ihre Kinder usw. usw.<br />
Das Ganze geht solange bis die Teilbäume nicht mehr auf weitere Knoten verweisen.Dann spricht man von einem Blatt.<br />
Also im Prinzip brauchst du ne Klasse/Struktur Node und ne Klasse Tree welche als Attribut für den Kopfknoten ein Exemplar der Klasse Node enthält.<br />
Darauf musst du alles aufbauen.<br />
Wenn du ne Liste zur Speicherung der Knoten benutzt(was sicherlich auch geht) dann kannst du nicht mehr die Laufzeiteigenschaften einhalten die einem Binärbaum im Allgemeinen zugesprochen werden.<br />
Die genaue Implementierung hängt von den wirklich gestellten Anforderungen ab.<br />
Brauchst du Iteratoren? Soll Node ne private innere Klasse von Tree sein usw.</p>
<p>Schau mal hier:<br />
<a href="http://www.netzmafia.de/skripten/ad/ad10.html" rel="nofollow">http://www.netzmafia.de/skripten/ad/ad10.html</a><br />
unter Baumstrukturen um erstmal hinter den generellen Gedanken zu kommen.<br />
Das Ganze ist in C,macht aber vom Prinzip her keinen Unterschied.<br />
Es geht anscheinend ja erstmal darum die Datenstruktur ansich und das rekursive Prinzip dahinter zu verstehen.</p>
<p>Gruss Spacelord</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1070768</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1070768</guid><dc:creator><![CDATA[Spacelord]]></dc:creator><pubDate>Sat, 03 Jun 2006 15:45:49 GMT</pubDate></item><item><title><![CDATA[Reply to list - zeiger auf list.begin() on Sat, 03 Jun 2006 15:48:17 GMT]]></title><description><![CDATA[<p>Ich glaub ich hab verstanden, was ihr meint. Ich wollte alle Elemente die später im Baum existieren irgendwo abspeichern, hab nicht daran gedacht, dass man den Baum garnicht in einer liste speichern muss sondern einfach durch node.left/right oder parent = new Node(); erstellen kann.<br />
Die folgen kurzsichtigen drauflosprogrammierens. <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>EDIT:<br />
Danke für die zusätzlichen informationen zu Bäumen, spacelord.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1070770</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1070770</guid><dc:creator><![CDATA[Nudel]]></dc:creator><pubDate>Sat, 03 Jun 2006 15:48:17 GMT</pubDate></item></channel></rss>