<?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[Liste mit lokalen Stacks]]></title><description><![CDATA[<p>Hallo Community!</p>
<p>Und wieder einmal habe ich eine Frage an euch. <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>
<p>Bei folgendem Listing wird eine Liste erzeugt und die Daten werden &quot;umgekehrt&quot; (Stack) wieder ausgegeben. Es gibt auch lokale Stacks darin, doch irgendwie verstehe ich den Sinn der ganzen Sache nicht wirklich. Sind die lokalen Stacks, damit auch nur einzelne Teile der Liste ausgegeben werden können? Und warum stehen beim Parameter &quot;TListenKnoten **Anker&quot; zwei Sterne vor &quot;Anker&quot;?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

// Listenelement: Daten und ein Zeiger zum Nachfolger
struct tListenKnoten
{
    int data;
    tListenKnoten *next;
};

// Schiebe ein Element auf den Stack-Anker
void push(tListenKnoten **Anker, int data)
{
    tListenKnoten *node = new tListenKnoten;
    node-&gt;data = data;
    node-&gt;next = *Anker; // Vorn einhängen
    *Anker = node;       // Als erstes Element setzen
}

// Ziehe ein Element vom Stack-Anker
int pop(tListenKnoten **Anker)
{
    int inhalt=0;
    if (*Anker) // gibt es überhaupt Elemente?
    {
        tListenKnoten *old = *Anker; // Element sichern
        *Anker = (*Anker)-&gt;next; // Zweites Element wird Anker
        inhalt = old-&gt;data; // Daten übernehmen
        delete old; // Gesichertes Element kann gelöscht werden
    }
    return inhalt;
}

int main() // Testprogramm
{
    tListenKnoten *Anker = 0;  // lege einen Stack an
    push(&amp;Anker, 2); // Elemente draufschieben
    push(&amp;Anker, 5);
    push(&amp;Anker, 18);
    cout &lt;&lt; pop(&amp;Anker) &lt;&lt; endl; // Nacheinander abziehen
    cout &lt;&lt; pop(&amp;Anker) &lt;&lt; endl;
    cout &lt;&lt; pop(&amp;Anker) &lt;&lt; endl;
}
</code></pre>
<p>Vielen Dank schonmal für eure Hilfe!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/261787/liste-mit-lokalen-stacks</link><generator>RSS for Node</generator><lastBuildDate>Mon, 07 Sep 2026 02:46:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/261787.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 23 Feb 2010 20:30:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Liste mit lokalen Stacks on Tue, 23 Feb 2010 20:30:05 GMT]]></title><description><![CDATA[<p>Hallo Community!</p>
<p>Und wieder einmal habe ich eine Frage an euch. <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>
<p>Bei folgendem Listing wird eine Liste erzeugt und die Daten werden &quot;umgekehrt&quot; (Stack) wieder ausgegeben. Es gibt auch lokale Stacks darin, doch irgendwie verstehe ich den Sinn der ganzen Sache nicht wirklich. Sind die lokalen Stacks, damit auch nur einzelne Teile der Liste ausgegeben werden können? Und warum stehen beim Parameter &quot;TListenKnoten **Anker&quot; zwei Sterne vor &quot;Anker&quot;?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

// Listenelement: Daten und ein Zeiger zum Nachfolger
struct tListenKnoten
{
    int data;
    tListenKnoten *next;
};

// Schiebe ein Element auf den Stack-Anker
void push(tListenKnoten **Anker, int data)
{
    tListenKnoten *node = new tListenKnoten;
    node-&gt;data = data;
    node-&gt;next = *Anker; // Vorn einhängen
    *Anker = node;       // Als erstes Element setzen
}

// Ziehe ein Element vom Stack-Anker
int pop(tListenKnoten **Anker)
{
    int inhalt=0;
    if (*Anker) // gibt es überhaupt Elemente?
    {
        tListenKnoten *old = *Anker; // Element sichern
        *Anker = (*Anker)-&gt;next; // Zweites Element wird Anker
        inhalt = old-&gt;data; // Daten übernehmen
        delete old; // Gesichertes Element kann gelöscht werden
    }
    return inhalt;
}

int main() // Testprogramm
{
    tListenKnoten *Anker = 0;  // lege einen Stack an
    push(&amp;Anker, 2); // Elemente draufschieben
    push(&amp;Anker, 5);
    push(&amp;Anker, 18);
    cout &lt;&lt; pop(&amp;Anker) &lt;&lt; endl; // Nacheinander abziehen
    cout &lt;&lt; pop(&amp;Anker) &lt;&lt; endl;
    cout &lt;&lt; pop(&amp;Anker) &lt;&lt; endl;
}
</code></pre>
<p>Vielen Dank schonmal für eure Hilfe!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1860293</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1860293</guid><dc:creator><![CDATA[Miness]]></dc:creator><pubDate>Tue, 23 Feb 2010 20:30:05 GMT</pubDate></item><item><title><![CDATA[Reply to Liste mit lokalen Stacks on Tue, 23 Feb 2010 20:37:40 GMT]]></title><description><![CDATA[<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> Was sollen da &quot;lokale Stacks&quot; sein?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1860295</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1860295</guid><dc:creator><![CDATA[müu]]></dc:creator><pubDate>Tue, 23 Feb 2010 20:37:40 GMT</pubDate></item><item><title><![CDATA[Reply to Liste mit lokalen Stacks on Tue, 23 Feb 2010 20:39:22 GMT]]></title><description><![CDATA[<p>[url=http://c-plusplus.net/forum/viewtopic-var-t-is-254043.html]Ohje,</p>
<p>das wird nichts, wenn du dich mit Listen beschäftigen willst, musst du wissen was &quot;Zeiger&quot; ( Deswegen die Sternchen ) sind ( Auch gennant als Pointers ).[/url]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1860297</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1860297</guid><dc:creator><![CDATA[OhNein]]></dc:creator><pubDate>Tue, 23 Feb 2010 20:39:22 GMT</pubDate></item><item><title><![CDATA[Reply to Liste mit lokalen Stacks on Tue, 23 Feb 2010 20:45:44 GMT]]></title><description><![CDATA[<p>@müü: Mit &quot;lokalen Stacks&quot; ist anscheinend gemeint, dass die Anker übergeben werden können.</p>
<p>@OhNein: Natürlich weiss ich was Zeiger sind. <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 />
Momentan ist es mir aber noch ein Rätsel, warum es zwei Sterne braucht. Zeiger werden ja normalerweise mit nur einem Stern definiert.</p>
<p><strong>EDIT: Ich glaube ich habe es jetzt selber herausgefunden. Ist das, weil sozusagen eine Adresse auf einen Zeiger übergeben wird? Werden deshalb die beiden Sterne benötigt?</strong></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1860299</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1860299</guid><dc:creator><![CDATA[Miness]]></dc:creator><pubDate>Tue, 23 Feb 2010 20:45:44 GMT</pubDate></item><item><title><![CDATA[Reply to Liste mit lokalen Stacks on Tue, 23 Feb 2010 20:47:48 GMT]]></title><description><![CDATA[<p>Miness schrieb:</p>
<blockquote>
<p>@müü: Mit &quot;lokalen Stacks&quot; ist anscheinend gemeint, dass die Anker übergeben werden können.</p>
<p>@OhNein: Natürlich weiss ich was Zeiger sind. <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 />
Momentan ist es mir aber noch ein Rätsel, warum es zwei Sterne braucht. Zeiger werden ja normalerweise mit nur einem Stern definiert.</p>
<p><strong>EDIT: Ich glaube ich habe es jetzt selber herausgefunden. Ist das, weil sozusagen eine Adresse auf einen Zeiger übergeben wird? Werden deshalb die beiden Sterne benötigt?</strong></p>
</blockquote>
<p>Ja, aber so ein Zeiger ist ja im Prinzip auch nur eine 32-Bit-Zahl, die eine Adresse bedeutet. Nun kann man auch noch einen Zeiger auf so eine Zeigervariable machen, das ist dann Punkt7 von dem Link.<br />
Edit: Ja, ganz genau.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1860301</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1860301</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Tue, 23 Feb 2010 20:47:48 GMT</pubDate></item></channel></rss>