<?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 verketteter Liste]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich lese gerade das Buch Thinking in C++ Vol. 1 von Bruce Eckel und hänge in Kapitel 4 an Übungsaufgabe 24.</p>
<p>Es ist eine Struktur zu Erstellen, die einen INT und einen Zeiger auf eine andere Instanz der selben Struktur enthält. Weiterhin ist eine Funktion zu schreiben, die die Adresse einer dieser structs und einen INT als Argument entgegennimmt. Entsprechend des Integer-Argumentes ist nun eine Kette von structs zu generieren: Der Integer im Struct soll den Index enthalten und der Zeiger soll auf das nächste Element in der Kette zeigen. Beim letzten Kettenglied soll der INT auf 0 gesetzt werden, um das Ende zu signalisieren.<br />
Nun soll eine zweite Funktion geschrieben werden, die den &quot;Kopf&quot; der Liste entgegennimmt und bis zum Ende alle Indexe (INT-Werte) und die Adressen der Zeiger ausgibt.</p>
<p>Nun zu meinem Problem: Mein Code scheint die Liste schon richtig zu generieren, doch beim Ausgeben mittels der zweiten Funktion werden nur die ungeraden Elemente ausgegeben.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

using namespace std;

struct myStruct
{
        int index;
        myStruct *next;
} newStruct;

myStruct *func( myStruct *mS, int cnt )
{
        if( cnt &gt;= 0 )
        {
                myStruct *newMs = new myStruct;
                mS-&gt;index = cnt--;
                mS-&gt;next = func( newMs, cnt );
                // DEBUG
                cout &lt;&lt; &quot;[&quot; &lt;&lt; mS-&gt;index &lt;&lt; &quot;: &quot; &lt;&lt; &amp;mS-&gt;next &lt;&lt; &quot;]&quot; &lt;&lt;  endl;
                return newMs;
        }
        return NULL;
}

void printList( myStruct *head )
{
        cout &lt;&lt; head-&gt;index &lt;&lt; &quot;: &quot; &lt;&lt; &amp;head-&gt;next &lt;&lt; endl;
        if( head-&gt;index &gt; 0 )
                printList( head-&gt;next );
}

int main()
{
        func( &amp;newStruct, 5 );
        printList( &amp;newStruct );
        return 0;
}
</code></pre>
<p>Führe ich das Ganze nun aus erhalte ich folgende Ausgabe:</p>
<pre><code>[0: 0x804a04c] # Liste wird erstellt
[1: 0x804a03c]
[2: 0x804a02c]
[3: 0x804a01c]
[4: 0x804a00c]
[5: 0x8049d9c]
5: 0x8049d9c   # Auslesen der Liste beginnt
3: 0x804a01c
1: 0x804a03c
0: 0x804a05c
</code></pre>
<p>Warum nun nur die ungeraden Indexe und die zugehörigen Zeiger ausgegeben werden und warum beim Index 0 die Adresse verschoben ist, kann ich mir nicht wirklich erklären. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
<p>Über einen kleinen Tip würde ich mich sehr freuen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
<p>Viele Grüße!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/147028/problem-mit-verketteter-liste</link><generator>RSS for Node</generator><lastBuildDate>Thu, 03 Sep 2026 23:34:18 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/147028.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 13 May 2006 07:20:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit verketteter Liste on Sat, 13 May 2006 07:20:40 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich lese gerade das Buch Thinking in C++ Vol. 1 von Bruce Eckel und hänge in Kapitel 4 an Übungsaufgabe 24.</p>
<p>Es ist eine Struktur zu Erstellen, die einen INT und einen Zeiger auf eine andere Instanz der selben Struktur enthält. Weiterhin ist eine Funktion zu schreiben, die die Adresse einer dieser structs und einen INT als Argument entgegennimmt. Entsprechend des Integer-Argumentes ist nun eine Kette von structs zu generieren: Der Integer im Struct soll den Index enthalten und der Zeiger soll auf das nächste Element in der Kette zeigen. Beim letzten Kettenglied soll der INT auf 0 gesetzt werden, um das Ende zu signalisieren.<br />
Nun soll eine zweite Funktion geschrieben werden, die den &quot;Kopf&quot; der Liste entgegennimmt und bis zum Ende alle Indexe (INT-Werte) und die Adressen der Zeiger ausgibt.</p>
<p>Nun zu meinem Problem: Mein Code scheint die Liste schon richtig zu generieren, doch beim Ausgeben mittels der zweiten Funktion werden nur die ungeraden Elemente ausgegeben.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

using namespace std;

struct myStruct
{
        int index;
        myStruct *next;
} newStruct;

myStruct *func( myStruct *mS, int cnt )
{
        if( cnt &gt;= 0 )
        {
                myStruct *newMs = new myStruct;
                mS-&gt;index = cnt--;
                mS-&gt;next = func( newMs, cnt );
                // DEBUG
                cout &lt;&lt; &quot;[&quot; &lt;&lt; mS-&gt;index &lt;&lt; &quot;: &quot; &lt;&lt; &amp;mS-&gt;next &lt;&lt; &quot;]&quot; &lt;&lt;  endl;
                return newMs;
        }
        return NULL;
}

void printList( myStruct *head )
{
        cout &lt;&lt; head-&gt;index &lt;&lt; &quot;: &quot; &lt;&lt; &amp;head-&gt;next &lt;&lt; endl;
        if( head-&gt;index &gt; 0 )
                printList( head-&gt;next );
}

int main()
{
        func( &amp;newStruct, 5 );
        printList( &amp;newStruct );
        return 0;
}
</code></pre>
<p>Führe ich das Ganze nun aus erhalte ich folgende Ausgabe:</p>
<pre><code>[0: 0x804a04c] # Liste wird erstellt
[1: 0x804a03c]
[2: 0x804a02c]
[3: 0x804a01c]
[4: 0x804a00c]
[5: 0x8049d9c]
5: 0x8049d9c   # Auslesen der Liste beginnt
3: 0x804a01c
1: 0x804a03c
0: 0x804a05c
</code></pre>
<p>Warum nun nur die ungeraden Indexe und die zugehörigen Zeiger ausgegeben werden und warum beim Index 0 die Adresse verschoben ist, kann ich mir nicht wirklich erklären. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
<p>Über einen kleinen Tip würde ich mich sehr freuen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
<p>Viele Grüße!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1056872</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1056872</guid><dc:creator><![CDATA[cypoc]]></dc:creator><pubDate>Sat, 13 May 2006 07:20:40 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit verketteter Liste on Sat, 13 May 2006 08:53:31 GMT]]></title><description><![CDATA[<p>so würde es gehen</p>
<pre><code>myStruct *func( myStruct *mS, int cnt )
{
    if( cnt &gt;= 0 )
    {
        myStruct *newMs = new myStruct;
        mS-&gt;index = cnt--;
        mS-&gt;next = newMs;
        func( newMs, cnt );
        cout &lt;&lt; &quot;[&quot; &lt;&lt; mS-&gt;index &lt;&lt; &quot;: &quot; &lt;&lt; mS-&gt;next &lt;&lt; &quot;]&quot; &lt;&lt;  endl;
        return newMs;
    }
    return NULL;
}
</code></pre>
<p>Kurt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1056908</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1056908</guid><dc:creator><![CDATA[ZuK]]></dc:creator><pubDate>Sat, 13 May 2006 08:53:31 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit verketteter Liste on Sat, 13 May 2006 09:38:55 GMT]]></title><description><![CDATA[<p>Danke! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1056928</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1056928</guid><dc:creator><![CDATA[cypoc]]></dc:creator><pubDate>Sat, 13 May 2006 09:38:55 GMT</pubDate></item></channel></rss>