<?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[Problem mit Liste]]></title><description><![CDATA[<p>Guten Tag,</p>
<p>ich bin ziemlich unerfahren was C++ angeht. Habe aber schon Erfahrung mit Java, und wir haben in der Schule mal eine Liste programmiert. Da ich jetzt dabei bin C++ zu lernen, wollte ich mal eine Liste programmieren. Dazu hab ich eine Klasse Listenelement erstellt, deren Objekte, wie der Name schon sagt die Elemente der Liste sind. Um Zugriff auf die Liste zu haben, habe ich im Hauptprogramm einen Zeiger auf den Anfang der Liste definiert. Fügt man das erste Element in die Liste ein, sollte der Zeiger auf genau dieses Listenelement zeigen. Das Problem bei mir ist nun, dass, wenn ich noch mehr Elemente hinzufüge, der Zeiger auf den Anfang plötzlich nicht mehr auf das erste Element zeigt.</p>
<p>Hier mal der Code:</p>
<p>#include &lt;iostream&gt;<br />
#include &quot;listenelement.h&quot;</p>
<p>Listenelement *anfang;<br />
int anzahl;</p>
<p>void ListenelementEinfuegen();<br />
void ListenelementeAusgeben();</p>
<p>int main(){<br />
anzahl=0;<br />
ListenelementEinfuegen();<br />
ListenelementEinfuegen();<br />
anfang-&gt;NummerAusgeben();<br />
int i;<br />
std::cin &gt;&gt; i;<br />
return 0;<br />
}</p>
<p>void ListenelementEinfuegen()<br />
{<br />
Listenelement neu(anzahl);<br />
anzahl = anzahl + 1;<br />
std::cout &lt;&lt; anzahl;<br />
if (anzahl==1){ anfang=&amp;neu;}<br />
else {anfang-&gt;ListenelementEinfuegen(neu);}<br />
}</p>
<p>void ListenelementeAusgeben()<br />
{<br />
anfang-&gt;ListenelementAusgeben();<br />
}</p>
<p>und die Klasse Listenelement:<br />
class Listenelement {<br />
private:<br />
Listenelement *nachfolger;<br />
int nummer;<br />
public:<br />
Listenelement(int nr)<br />
{<br />
nummer = nr;<br />
nachfolger = this;<br />
}<br />
void ListenelementAusgeben()<br />
{<br />
std::cout &lt;&lt; &quot;Listenelement Nr. &quot; &lt;&lt; nummer &lt;&lt; &quot;!\n&quot;;<br />
if (nachfolger!=this) nachfolger-&gt;ListenelementAusgeben();<br />
}<br />
void NachfolgerSetzen(Listenelement nachf)<br />
{<br />
nachfolger = &amp;nachf;<br />
}<br />
void ListenelementEinfuegen(Listenelement neu)<br />
{<br />
if (nachfolger==this) {NachfolgerSetzen(neu);}<br />
else {nachfolger-&gt;ListenelementEinfuegen(neu);}<br />
}<br />
void NummerAusgeben()<br />
{<br />
std::cout &lt;&lt; nummer;<br />
}<br />
};</p>
<p>Danke schonmal im Vorraus für jegliche Antworten und Hilfen! <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/topic/290851/problem-mit-liste</link><generator>RSS for Node</generator><lastBuildDate>Tue, 18 Aug 2026 02:28:01 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/290851.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 04 Aug 2011 13:34:15 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit Liste on Thu, 04 Aug 2011 13:34:15 GMT]]></title><description><![CDATA[<p>Guten Tag,</p>
<p>ich bin ziemlich unerfahren was C++ angeht. Habe aber schon Erfahrung mit Java, und wir haben in der Schule mal eine Liste programmiert. Da ich jetzt dabei bin C++ zu lernen, wollte ich mal eine Liste programmieren. Dazu hab ich eine Klasse Listenelement erstellt, deren Objekte, wie der Name schon sagt die Elemente der Liste sind. Um Zugriff auf die Liste zu haben, habe ich im Hauptprogramm einen Zeiger auf den Anfang der Liste definiert. Fügt man das erste Element in die Liste ein, sollte der Zeiger auf genau dieses Listenelement zeigen. Das Problem bei mir ist nun, dass, wenn ich noch mehr Elemente hinzufüge, der Zeiger auf den Anfang plötzlich nicht mehr auf das erste Element zeigt.</p>
<p>Hier mal der Code:</p>
<p>#include &lt;iostream&gt;<br />
#include &quot;listenelement.h&quot;</p>
<p>Listenelement *anfang;<br />
int anzahl;</p>
<p>void ListenelementEinfuegen();<br />
void ListenelementeAusgeben();</p>
<p>int main(){<br />
anzahl=0;<br />
ListenelementEinfuegen();<br />
ListenelementEinfuegen();<br />
anfang-&gt;NummerAusgeben();<br />
int i;<br />
std::cin &gt;&gt; i;<br />
return 0;<br />
}</p>
<p>void ListenelementEinfuegen()<br />
{<br />
Listenelement neu(anzahl);<br />
anzahl = anzahl + 1;<br />
std::cout &lt;&lt; anzahl;<br />
if (anzahl==1){ anfang=&amp;neu;}<br />
else {anfang-&gt;ListenelementEinfuegen(neu);}<br />
}</p>
<p>void ListenelementeAusgeben()<br />
{<br />
anfang-&gt;ListenelementAusgeben();<br />
}</p>
<p>und die Klasse Listenelement:<br />
class Listenelement {<br />
private:<br />
Listenelement *nachfolger;<br />
int nummer;<br />
public:<br />
Listenelement(int nr)<br />
{<br />
nummer = nr;<br />
nachfolger = this;<br />
}<br />
void ListenelementAusgeben()<br />
{<br />
std::cout &lt;&lt; &quot;Listenelement Nr. &quot; &lt;&lt; nummer &lt;&lt; &quot;!\n&quot;;<br />
if (nachfolger!=this) nachfolger-&gt;ListenelementAusgeben();<br />
}<br />
void NachfolgerSetzen(Listenelement nachf)<br />
{<br />
nachfolger = &amp;nachf;<br />
}<br />
void ListenelementEinfuegen(Listenelement neu)<br />
{<br />
if (nachfolger==this) {NachfolgerSetzen(neu);}<br />
else {nachfolger-&gt;ListenelementEinfuegen(neu);}<br />
}<br />
void NummerAusgeben()<br />
{<br />
std::cout &lt;&lt; nummer;<br />
}<br />
};</p>
<p>Danke schonmal im Vorraus für jegliche Antworten und Hilfen! <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/2101749</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2101749</guid><dc:creator><![CDATA[Dgoller]]></dc:creator><pubDate>Thu, 04 Aug 2011 13:34:15 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Liste on Thu, 04 Aug 2011 15:47:05 GMT]]></title><description><![CDATA[<p>In der ListenelementEinfügen()-Funkion biegst du den Zeiger Anfang auf eine lokale Variable, die am Ende er Funktion zerstört wird. Was du danah mit dieser Variable machst, ist undefiniertes Verhalten.<br />
Ich fürche, wenn du das wirklich selber umsetzen willst, kommst du um dynamische Speicherverwaltung (new/delete) nicht herum. Aber ansonsten empfehle ich eher, die Möglichkeiten der Standardbibliothek (std::list&lt;&gt;) zu nutzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2101798</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2101798</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 04 Aug 2011 15:47:05 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Liste on Thu, 04 Aug 2011 16:09:55 GMT]]></title><description><![CDATA[<p>Okay, danke für die Info. Habs verstanden was der Fehler ist!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2101815</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2101815</guid><dc:creator><![CDATA[Dgoller]]></dc:creator><pubDate>Thu, 04 Aug 2011 16:09:55 GMT</pubDate></item></channel></rss>