<?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[Einfach verkettete Liste?]]></title><description><![CDATA[<p>Hi Leute!</p>
<pre><code class="language-cpp">void insertAfter(slList *element, int val)
	{
		slList *new_element = new slList;	//Element erzeugen welches eingefügt werden soll
		new_element-&gt;inhalt = val;		//Nutzdaten des neuen Elements angeben
		new_element-&gt;next_knoten = element-&gt;next_knoten;	//Hier wird das neue einzufügende Element mit dem vorhergehenden Element verbunden
		element-&gt;next_knoten = new_element;		//Warum braucht man diese Zeile auch noch?
	};
</code></pre>
<p>Ihr seht hier eine Funktion die ein neues Listenelement nach dem letzten Element (insertAfter) einfügt. Der Code ist soweit richtig. Ich verstehe aber nicht warum man die letzte Zeile in der Funktion benötigt!</p>
<p>Eine Frage zur vorhergehenden Zeile hab ich noch:</p>
<p>Wie liest man diese Zeile dass sie Sinn ergibt? Wird hier nun das bestehende Element mit dem neuen Element verbunden oder anders rum? Kann man das hier als &quot;Linkszuweisung&quot; verstehen? So in der Art, dass der next_knoten von new_element gleich dem next_knoten des element ist? So wie x = 5; eben? Hier wird x auch gleich 5...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/297001/einfach-verkettete-liste</link><generator>RSS for Node</generator><lastBuildDate>Fri, 14 Aug 2026 14:34:05 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/297001.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 16 Dec 2011 17:19:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Einfach verkettete Liste? on Fri, 16 Dec 2011 17:19:50 GMT]]></title><description><![CDATA[<p>Hi Leute!</p>
<pre><code class="language-cpp">void insertAfter(slList *element, int val)
	{
		slList *new_element = new slList;	//Element erzeugen welches eingefügt werden soll
		new_element-&gt;inhalt = val;		//Nutzdaten des neuen Elements angeben
		new_element-&gt;next_knoten = element-&gt;next_knoten;	//Hier wird das neue einzufügende Element mit dem vorhergehenden Element verbunden
		element-&gt;next_knoten = new_element;		//Warum braucht man diese Zeile auch noch?
	};
</code></pre>
<p>Ihr seht hier eine Funktion die ein neues Listenelement nach dem letzten Element (insertAfter) einfügt. Der Code ist soweit richtig. Ich verstehe aber nicht warum man die letzte Zeile in der Funktion benötigt!</p>
<p>Eine Frage zur vorhergehenden Zeile hab ich noch:</p>
<p>Wie liest man diese Zeile dass sie Sinn ergibt? Wird hier nun das bestehende Element mit dem neuen Element verbunden oder anders rum? Kann man das hier als &quot;Linkszuweisung&quot; verstehen? So in der Art, dass der next_knoten von new_element gleich dem next_knoten des element ist? So wie x = 5; eben? Hier wird x auch gleich 5...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2157822</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2157822</guid><dc:creator><![CDATA[vip*r]]></dc:creator><pubDate>Fri, 16 Dec 2011 17:19:50 GMT</pubDate></item><item><title><![CDATA[Reply to Einfach verkettete Liste? on Fri, 16 Dec 2011 19:05:03 GMT]]></title><description><![CDATA[<p>Hallo vip@r,</p>
<p>ohne die letzte Zeile würde der Nachfolger von 'element' ja immer noch der alte bleiben. Und daher weist du dein neu erzeugtes Element als Nachfolger zu.<br />
Und eine Zeile vorher hast du den alten Nachfolger als Nachfolger des neuen Elements zugewiesen.</p>
<p>P.S. Diese Frage wäre im reinen C++ Subforum besser aufgehoben...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2157850</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2157850</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Fri, 16 Dec 2011 19:05:03 GMT</pubDate></item><item><title><![CDATA[Reply to Einfach verkettete Liste? on Sat, 17 Dec 2011 17:57:14 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/u18363" rel="nofollow">Jochen Kalmbach</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/f58" rel="nofollow">C++/CLI mit .NET</a> in das Forum <a href="http://www.c-plusplus.net/forum/f15" rel="nofollow">C++ (auch C++0x, bzw. C++11)</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/39405" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2158125</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2158125</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Sat, 17 Dec 2011 17:57:14 GMT</pubDate></item><item><title><![CDATA[Reply to Einfach verkettete Liste? on Sat, 17 Dec 2011 18:17:41 GMT]]></title><description><![CDATA[<p>Th69 schrieb:</p>
<blockquote>
<p>...</p>
</blockquote>
<p>Ergänzend vielleicht dazu, bei doppelt verketteten Listen ist es klar, das auch das vordere Element den &quot;zurück&quot; Zeiger auf das neue Zeigen lässt:</p>
<pre><code>(KNOTEN) [b]--next-Zeiger-von-X--&gt;&gt;[/b] (KNOTEN)
(X     ) [b]&lt;&lt;--prev-Zeiger-von-Y--[/b] (Y     )
                      ^^
              Hier soll was rein
</code></pre>
<pre><code>(KNOTEN) [b]---next-Zeiger-von-X[/b]                  [b]-&gt;&gt;[/b] (KNOTEN)
(X     ) [b]&lt;&lt;--[/b]                  [b]prev-Zeiger-von-Y--[/b] (Y     )
                                 ^^
                          Hier soll was rein
</code></pre>
<pre><code>(KNOTEN) [b]--next-Zeiger-von-X--&gt;&gt;[/b] (KNOTEN NEU) [b]--next-Zeiger-von-Z--&gt;&gt;[/b] (KNOTEN)
(X     ) [b]&lt;&lt;--prev-Zeiger-von-Z--[/b] (Z         ) [b]&lt;&lt;--prev-Zeiger-von-Y--[/b] (Y     )
                                    ^^^^^^
                         Hier ist jetzt der neue Knoten
</code></pre>
<p>Bei einfach verketteten Listen einfach den unteren Teil wegdenken (bis auf den Namen!) :xmas1: :xmas2:</p>
<p>Edit: prev -&gt; previous -&gt; vorhergehendes<br />
next -&gt; nächstes</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2158129</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2158129</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 17 Dec 2011 18:17:41 GMT</pubDate></item><item><title><![CDATA[Reply to Einfach verkettete Liste? on Sun, 18 Dec 2011 13:01:41 GMT]]></title><description><![CDATA[<p>Th69 schrieb:</p>
<blockquote>
<p>Und eine Zeile vorher hast du den alten Nachfolger als Nachfolger des neuen Elements zugewiesen.</p>
</blockquote>
<p>Das würde ja dann bedeuten, dass der alte Nachfolger der alte Knoten selber wahr, oder? Geht sowas denn überhaupt? Denn &quot;element&quot; hatte ja bisher noch gar keinen Nachfolger! Also so versteh ich das jetzt grad <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>Vielleicht schreibt du nochmal kurz was dazu?</p>
<p>Ein großes Dankeschön!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2158319</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2158319</guid><dc:creator><![CDATA[vip*r]]></dc:creator><pubDate>Sun, 18 Dec 2011 13:01:41 GMT</pubDate></item><item><title><![CDATA[Reply to Einfach verkettete Liste? on Sun, 18 Dec 2011 14:01:45 GMT]]></title><description><![CDATA[<p>Ich hab dann gleich nochmal eine Frage an euch:</p>
<p>Der Code hier, gibt mir eine einfach verkettete List mit 10 Elementen aus:</p>
<pre><code class="language-cpp">#include&lt;iostream&gt;
#include&lt;cstdlib&gt;
using namespace std;

class slList
{
public:
	slList *next_knoten;
	int inhalt;

	void initslList()
	{
		next_knoten = NULL;
	};

	void printslList()
	{
		slList *tmp = next_knoten;

		cout &lt;&lt; &quot;Liste: &quot;;

		while(tmp!=NULL)
		{
			cout &lt;&lt; &quot;[&quot; &lt;&lt; tmp-&gt;inhalt &lt;&lt; &quot;]&quot;;
			tmp = tmp-&gt;next_knoten;
		}

		cout &lt;&lt; endl;
	}

	void insertAfter(slList *element, int val)
	{
		slList *new_element = new slList;	//Element erzeugen welches eingefügt werden soll
		new_element-&gt;inhalt = val;		//Nutzdaten des neuen Elements angeben
		new_element-&gt;next_knoten = element-&gt;next_knoten;	//Hier wird das neue einzufügende Element mit dem vorhergehenden Element verbunden
		element-&gt;next_knoten = new_element;		//Hier wird das nachfolgende Element zugewiesen
	};

        void deleteElement(slList *element_prev, slList *element_to_del)
	{
		while(element_prev-&gt;next_knoten != element_to_del-&gt;next_knoten)
		{
			element_prev = element_prev-&gt;next_knoten;
		}

		element_prev-&gt;next_knoten = element_to_del-&gt;next_knoten;	//element_to_del auskoppeln; der Zeiger von element_prev wird auf das Element umgebogen,
																	//auf das der Zeiger von element_to_del gezeigt hat
		delete element_to_del;			//löscht das ausgekoppelte Element &quot;element_to_del&quot;
	};
};

int main()
{
	slList *element = new slList;

	element-&gt;initslList();	//legt ein Element fest

	for(int i=10; i&gt;=1; i--)		//erstellt 10 Elemente in der Liste; in &quot;val&quot; steht der Wert des jeweiligen Zählerschrittes
	{
		element-&gt;insertAfter(element, i);
	}
        element-&gt;printslList();

        element-&gt;deleteElement(?);
        element-&gt;printslList();

system(&quot;pause&quot;);
return 0;
}
</code></pre>
<p>Nun hab ich noch eine Funktion in die Klasse geschrieben, die mir ein bestimmtes Element in der Liste löscht. Dazu muss ich ja nun im main-Teil auch die Funktion deleteElement aufrufen. Aber: Ich kapier grad nicht welche Elemente ich übergeben muss? Ich möchte nun z.B. Element 5 von den 10 Elementen löschen! Dann steht ja in &quot;val&quot; die 5 drin. Dazu müsste ich ja irgendwie das val auch mit übergeben? Laut meines Lehrers brauche ich das val aber nicht... Könnt ihr mir speziell bei dieser Funktion kurz helfen, dass ich es verstehe?</p>
<p>Könnte mir hier auch noch jemand die while-Schleife erklären. Die raff ich auch nicht so ganz. Ich weiß zwar was da gemacht wird, kann das aber irgendwie nicht auf die Auswirkung in der Liste umlegen!</p>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2158345</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2158345</guid><dc:creator><![CDATA[vip*r]]></dc:creator><pubDate>Sun, 18 Dec 2011 14:01:45 GMT</pubDate></item><item><title><![CDATA[Reply to Einfach verkettete Liste? on Sun, 18 Dec 2011 18:54:08 GMT]]></title><description><![CDATA[<p>1. Keine Datenkapselung, nix mit OOP<br />
2. Schon von Konst/Destruktoren gehört? Ganz cool die Dinger :xmas1:<br />
3. Sowas wie insert, erase und Zugriffsfunktionen realisiert man über iteratoren (oder Zeiger auf Knoten, was im Endeffekt dasselbe ist).</p>
<p>:xmas1:</p>
<p>4. return 0; in main (und auch nur da!!) unnötig (gibt default 0 zurück)<br />
5. system(&quot;pause&quot;); (und sowieso alle Windows-Konsolenbefehle) ist unportabel. Nimm lieber einfach eine Endlosschleife (a la &quot;for( ; ; ) ;&quot;) und Beende das Programm durch Schließen.<br />
6. using namespace std; dazu gibt es diverse Threads. Es ist 1) kein Sinn von Namensräumen, sie wieder auszuleeren, 2) es ist <strong>jetzt</strong> noch nicht schlimm, wird es aber wenn du<br />
etwas mehr Programmierst merkst du Schwierigkeiten.</p>
<p>Edit: Und nochwas, deine Formatierung ist nicht GANZ so schön. <a href="http://www.c-plusplus.net/forum/p2158131#2158131" rel="nofollow">http://www.c-plusplus.net/forum/p2158131#2158131</a> siehe da</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2158417</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2158417</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 18 Dec 2011 18:54:08 GMT</pubDate></item></channel></rss>