<?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[Stackfunktionen in template Klasse]]></title><description><![CDATA[<p>Ich habe eine Klasse Stack und dafür brauch ich die Funktionen &quot;pop&quot; und &quot;push&quot;. weiss jemand wie die aussehen?Mich verwirrt etwas das ich es hier mit gleich 2 Klassen zu tun habe...</p>
<p>template&lt;class T&gt;class Stack;</p>
<p>template&lt;class T&gt;<br />
class Stack_el {<br />
private:<br />
T eintrag;<br />
Stack_el* next; //Zeiger auf naechstes Element im Stack</p>
<p>public:<br />
Stack_el() { eintrag=0; next=NULL; }<br />
Stack_el(T n) { eintrag=n; next=NULL; }</p>
<p>template&lt;class S&gt; friend class Stack;<br />
};</p>
<p>template&lt;class T&gt;<br />
class Stack {<br />
private:<br />
Stack_el&lt;T&gt;* data; //Zeiger auf oberstes Element</p>
<p>public:<br />
Stack() { data=NULL; }<br />
void push(T);<br />
int pop();<br />
};</p>
<p>// Element vom Stack nehmen und freigeben<br />
template&lt;class T&gt;int Stack&lt;T&gt;::pop()<br />
{;}</p>
<p>// Neues Element auf den Stack schieben<br />
template&lt;class T&gt;void Stack&lt;T&gt;::push(T)<br />
{<br />
Stack_el_next++;<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/256711/stackfunktionen-in-template-klasse</link><generator>RSS for Node</generator><lastBuildDate>Fri, 11 Sep 2026 05:31:44 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/256711.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 16 Dec 2009 17:56:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Stackfunktionen in template Klasse on Wed, 16 Dec 2009 17:56:26 GMT]]></title><description><![CDATA[<p>Ich habe eine Klasse Stack und dafür brauch ich die Funktionen &quot;pop&quot; und &quot;push&quot;. weiss jemand wie die aussehen?Mich verwirrt etwas das ich es hier mit gleich 2 Klassen zu tun habe...</p>
<p>template&lt;class T&gt;class Stack;</p>
<p>template&lt;class T&gt;<br />
class Stack_el {<br />
private:<br />
T eintrag;<br />
Stack_el* next; //Zeiger auf naechstes Element im Stack</p>
<p>public:<br />
Stack_el() { eintrag=0; next=NULL; }<br />
Stack_el(T n) { eintrag=n; next=NULL; }</p>
<p>template&lt;class S&gt; friend class Stack;<br />
};</p>
<p>template&lt;class T&gt;<br />
class Stack {<br />
private:<br />
Stack_el&lt;T&gt;* data; //Zeiger auf oberstes Element</p>
<p>public:<br />
Stack() { data=NULL; }<br />
void push(T);<br />
int pop();<br />
};</p>
<p>// Element vom Stack nehmen und freigeben<br />
template&lt;class T&gt;int Stack&lt;T&gt;::pop()<br />
{;}</p>
<p>// Neues Element auf den Stack schieben<br />
template&lt;class T&gt;void Stack&lt;T&gt;::push(T)<br />
{<br />
Stack_el_next++;<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1823637</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1823637</guid><dc:creator><![CDATA[fischldi]]></dc:creator><pubDate>Wed, 16 Dec 2009 17:56:26 GMT</pubDate></item><item><title><![CDATA[Reply to Stackfunktionen in template Klasse on Wed, 16 Dec 2009 18:05:13 GMT]]></title><description><![CDATA[<p>fischldi schrieb:</p>
<blockquote>
<p>Ich habe eine Klasse Stack und dafür brauch ich die Funktionen &quot;pop&quot; und &quot;push&quot;. weiss jemand wie die aussehen?</p>
</blockquote>
<p>Ja. Aber ich schätze mal, das ist eine Hausaufgabe, dass du das rausfindest. Dafür musst du aber wohl erstmal deine Vorgabe verstehen.</p>
<p>Der grobe Ablauf:<br />
pop: Das erste Element zurückgeben, Zeiger auf erstes Element dahin setzen, wo das alte erste Element hingezeigt hat. Altes erstes Element freigeben.</p>
<p>push: Neues Element anlegen. Den Zeigern folgen, bis man das Ende erreicht hat. Den letzten Zeiger auf das neue Element zeigen lassen</p>
<p>Dabei natürlich immer darauf achten, dass man keine Nullzeiger dereferenziert.</p>
<blockquote>
<p>Mich verwirrt etwas das ich es hier mit gleich 2 Klassen zu tun habe...</p>
</blockquote>
<p>Das ist doch sogar schon kommentiert. Na schön, ein weiterer Tipp: Die eine Klasse repräsentiert den Stack (was nichts anderes ist als ein Zeiger auf das erste Element und ein paar Methoden) und die andere Klasse speichert ein Element und den Zeiger auf das nächste Element.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1823642</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1823642</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 16 Dec 2009 18:05:13 GMT</pubDate></item><item><title><![CDATA[Reply to Stackfunktionen in template Klasse on Wed, 16 Dec 2009 18:11:18 GMT]]></title><description><![CDATA[<p>Die Kommentare hab ich dahin geschrieben.:-)</p>
<p>Wenn ich die Funktion pop hab ,</p>
<p>// Element vom Stack nehmen und freigeben<br />
template&lt;class T&gt;int Stack&lt;T&gt;::pop()<br />
{<br />
if(next == data) return false; // Stack leer<br />
}</p>
<p>dann muss ich ja zuerst schauen ob der Stack überhaupt ein Element hab.Warum meckert denn der Compiler das er next und data nicht kennt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1823647</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1823647</guid><dc:creator><![CDATA[fischldi]]></dc:creator><pubDate>Wed, 16 Dec 2009 18:11:18 GMT</pubDate></item><item><title><![CDATA[Reply to Stackfunktionen in template Klasse on Wed, 16 Dec 2009 18:44:24 GMT]]></title><description><![CDATA[<p>Schreib Quelltext bitte IMMER in cpp-Tags, das kann ja sonst keiner lesen (links unter den Smileys, der Button C/C++)</p>
<p>fischldi schrieb:</p>
<blockquote>
<p>dann muss ich ja zuerst schauen ob der Stack überhaupt ein Element hab.Warum meckert denn der Compiler das er next und data nicht kennt?</p>
</blockquote>
<p>Das bisher geschriebene ist ziemlich chaotisch und schwer zu lesen wegen der fehlenden cpp-Tags. Gib bitte minimale, compilierbare (oder eben nicht compilierbar, wenn das das Problem sein sollte) Beispiele mit genauer Fehlermeldung.</p>
<p>Was den Test für den leeren Stack angeht: Setz ungülltige Zeiger immer auf NULL. Und dann prüfst du einfach, ob ein Zeiger NULL ist.</p>
<p>edit: Und noch etwas was mir auffällt: int als Rückgabetyp von pop? Sollte das nicht eher T sein.</p>
<p>Und einen Fehler habe ich gemacht: Ich habe oben das push für eine Queue beschrieben, nicht für einen Stack. Bei einem Stack musst du natürlich vorne einhängen, also: Neues Element erzeugen, Neues Element auf alten Stackzeiger zeigen lassen, Stackzeiger auf neues Element setzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1823657</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1823657</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 16 Dec 2009 18:44:24 GMT</pubDate></item></channel></rss>