<?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[Einfache Verkettete Liste]]></title><description><![CDATA[<p>Hallo!<br />
Ich bin eig nicht der Typ für solche Anfragen hier, nur interessiert es mich sehr.<br />
Wir wollen bald in der Schule mit verketteten Listen anfangen, also fing ich an zu googlen was man darunter versteht und wie diese wohl aufgebaut sind..<br />
Hier bin ich auf ein Tutorial gestoßen (<a href="http://www.fh-augsburg.de/informatik/vorlesungen/c_cplus/tutorial/henkel/Verkettete_Liste.html" rel="nofollow">Link</a>), muss aber zugeben, dass ich das nicht soooo genau verstehe.<br />
Deswegen wollt ich mal fragen, ob hier jemand vllt so nett wäre um mir ein simples Beispiel zu programmieren, aus dem ich es mir am Besten erschliessen könnte (Sinn ist es ja dass ich es verstehe).<br />
Es sollte halt nicht nach einer besonderen Aufgabenstellung gehen, sondern nur so, dass ich es verstehe^^<br />
Habe aus dem Tutoriel mir schon so viel Quellcode zusammengewürfelt:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;stdlib.h&gt;

using namespace std;

class Element
{
   private:
      int m_wert;
      Element *m_pNeachstesElement;
   public:
        void set (int a)
        {
            m_wert=a;
        }

        int get()
        {
            return m_wert;
        }
};

int main()
{
     Element *pNeuesElement=new Element;
     pNeuesElement-&gt;set(4);
     cout&lt;&lt;&quot;Liste 1: &quot;&lt;&lt;pNeuesElement-&gt;get()&lt;&lt;endl;
     cin.get();
     return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/211309/einfache-verkettete-liste</link><generator>RSS for Node</generator><lastBuildDate>Wed, 14 Oct 2026 00:08:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/211309.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 21 Apr 2008 16:41:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Einfache Verkettete Liste on Mon, 21 Apr 2008 16:41:06 GMT]]></title><description><![CDATA[<p>Hallo!<br />
Ich bin eig nicht der Typ für solche Anfragen hier, nur interessiert es mich sehr.<br />
Wir wollen bald in der Schule mit verketteten Listen anfangen, also fing ich an zu googlen was man darunter versteht und wie diese wohl aufgebaut sind..<br />
Hier bin ich auf ein Tutorial gestoßen (<a href="http://www.fh-augsburg.de/informatik/vorlesungen/c_cplus/tutorial/henkel/Verkettete_Liste.html" rel="nofollow">Link</a>), muss aber zugeben, dass ich das nicht soooo genau verstehe.<br />
Deswegen wollt ich mal fragen, ob hier jemand vllt so nett wäre um mir ein simples Beispiel zu programmieren, aus dem ich es mir am Besten erschliessen könnte (Sinn ist es ja dass ich es verstehe).<br />
Es sollte halt nicht nach einer besonderen Aufgabenstellung gehen, sondern nur so, dass ich es verstehe^^<br />
Habe aus dem Tutoriel mir schon so viel Quellcode zusammengewürfelt:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;stdlib.h&gt;

using namespace std;

class Element
{
   private:
      int m_wert;
      Element *m_pNeachstesElement;
   public:
        void set (int a)
        {
            m_wert=a;
        }

        int get()
        {
            return m_wert;
        }
};

int main()
{
     Element *pNeuesElement=new Element;
     pNeuesElement-&gt;set(4);
     cout&lt;&lt;&quot;Liste 1: &quot;&lt;&lt;pNeuesElement-&gt;get()&lt;&lt;endl;
     cin.get();
     return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1495768</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1495768</guid><dc:creator><![CDATA[Thunaer]]></dc:creator><pubDate>Mon, 21 Apr 2008 16:41:06 GMT</pubDate></item><item><title><![CDATA[Reply to Einfache Verkettete Liste on Mon, 21 Apr 2008 17:16:45 GMT]]></title><description><![CDATA[<p>Hi</p>
<p>Also du hast ja schon eine Node-Klasse (bei dir &quot;Element&quot;).<br />
Jetzt brauchst du noch eine LinkedList-Klasse.</p>
<p>Diese sollte als Datenmember minedestens einen Front- sowie einen Rear-Pointer enthalten (bei dir wären die also vom Typ Element*), um auf das erste bzw. letzte Element zugreifen zu können. Zusätzlich brauchst du eine enqueue()-Methode welche dir hinten (also jeweils hinter dem Element auf das der Rear-Pointer zeigt) neue Elemente anfügt, meist macht man das mittels new (achtung: wenn Klassen dynamisch Speicher anfordern muss der Destruktor den Speicher wieder freigeben --&gt; delete). Auch gut wäre natürlich eine Methode um z.B. das vorderste Element entfernen zu können, also eine pop()- resp. deque()-Methode.</p>
<p>Wenn du deine linked list so implementierst hast du eine sogenannte Queue.</p>
<p>Solche Datenstrukturen gibt's übrigens auch fertig gebacken in der STL (std::deque ist z.B. eine solche...).</p>
<p>Natürlich kannst du nicht erwarten dass dir hier jemand eine fertige Implementierung gibt.... <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>Falls dir doch jemand eine gibt herzlichen Glückwunsch, der Lerneffekt geht einfach flöten....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1495779</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1495779</guid><dc:creator><![CDATA[Dave__R]]></dc:creator><pubDate>Mon, 21 Apr 2008 17:16:45 GMT</pubDate></item><item><title><![CDATA[Reply to Einfache Verkettete Liste on Mon, 21 Apr 2008 19:00:14 GMT]]></title><description><![CDATA[<p>Hmm also davon hab ich nicht soo viel verstanden <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":-D"
      alt="😃"
    /><br />
Ich wollte ja nur ein kleines Beispiel haben, am besten kommentiert, um mich selber durch den Quellcode schlagen zu können, denn das ist der Weg durch den ich irgendwie am meisten lerne....<br />
Aber wenn das hier keiner macht / machen möchte (ist ja auch verständlich), muss ich eben darauf warten, bis wir das Thema Pointer im Unterricht angesprochen haben und irgendwann mal darauf zu sprechen kommen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1495841</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1495841</guid><dc:creator><![CDATA[Thunaer]]></dc:creator><pubDate>Mon, 21 Apr 2008 19:00:14 GMT</pubDate></item><item><title><![CDATA[Reply to Einfache Verkettete Liste on Mon, 21 Apr 2008 19:39:45 GMT]]></title><description><![CDATA[<p>wow dieses tutorial beispiel ist auch total beschissen</p>
<p>ka, lies dir mal dieses durch vllt<br />
<a href="http://richardbowles.tripod.com/cpp/linklist/linklist.htm" rel="nofollow">http://richardbowles.tripod.com/cpp/linklist/linklist.htm</a></p>
<p>das hat viele grafiken und scheint die einzelnen schritte wie element einfügen und element löschen gut zu erklären</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1495873</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1495873</guid><dc:creator><![CDATA[Vevusio]]></dc:creator><pubDate>Mon, 21 Apr 2008 19:39:45 GMT</pubDate></item><item><title><![CDATA[Reply to Einfache Verkettete Liste on Mon, 21 Apr 2008 20:12:32 GMT]]></title><description><![CDATA[<p>Der folgende Code ist ein minimales Lagerverwaltungsprogramm; das einfachste was sich bei mir ausgraben lies.<br />
Mit Klassen und so habe ich nicht gearbeitet (konnte ich ja damals noch nicht <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="😮"
    /> ), aber der Code ist so kurz, dass man's vielleicht trotzdem verstehen kann...</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;cstdlib&gt;
#include &lt;string&gt;

void artikel_hinzufuegen(struct artikel neuer_artikel);
void artikel_ausgeben(void);

struct artikel{
	std::string name;
	struct artikel *next;
};

int main(void){
	LOOP:
	system(&quot;CLS&quot;);
	std::cout
		&lt;&lt;&quot;+-------------------------------------+&quot;&lt;&lt;std::endl
		&lt;&lt;&quot;| &lt; H &gt; - Artikel hinzufuegen         |&quot;&lt;&lt;std::endl
		&lt;&lt;&quot;| &lt; A &gt; - Artikel (sortiert) ausgeben |&quot;&lt;&lt;std::endl
		&lt;&lt;&quot;| &lt; B &gt; - Programm beenden            |&quot;&lt;&lt;std::endl
		&lt;&lt;&quot;+-------------------------------------+&quot;&lt;&lt;std::endl
		&lt;&lt;std::endl&lt;&lt;&quot;Ihre Auswahl: &lt;   &gt;\b\b\b&quot;;
	char menue_auswahl;
	std::cin&gt;&gt;menue_auswahl;
	switch(menue_auswahl){
		case 'H':{
			system(&quot;CLS&quot;);
			std::cout&lt;&lt;&quot;Artikelname: &quot;;
			std::string artikelname;
			std::cin&gt;&gt;artikelname;
			struct artikel a={artikelname};
			artikel_hinzufuegen(a);
			std::cout&lt;&lt;&quot;Der Artikel wurde erfolgreich hinzugefuegt!&quot;&lt;&lt;std::endl;
			system(&quot;PAUSE&quot;);
			break;
		}
		case 'A':{
			system(&quot;CLS&quot;);
			artikel_ausgeben();
			system(&quot;PAUSE&quot;);
			break;
		}
		case 'B':{
			return 0;
		}
		default:{
			std::cerr&lt;&lt;&quot;FEHLER: Ungueltige Eingabe!&quot;&lt;&lt;std::endl;
			system(&quot;PAUSE&quot;);
		}
	}
	goto LOOP;
}

static struct artikel *erster_artikel=NULL;

void artikel_hinzufuegen(struct artikel neuer_artikel){
	static struct artikel *letzter_artikel=NULL;

	if(erster_artikel!=NULL){
		struct artikel *speicher_fuer_neuen_artikel=new struct artikel;
		speicher_fuer_neuen_artikel-&gt;name=neuer_artikel.name;
		speicher_fuer_neuen_artikel-&gt;next=NULL;
		letzter_artikel-&gt;next=speicher_fuer_neuen_artikel;
		letzter_artikel=speicher_fuer_neuen_artikel;
	}
	else{
		erster_artikel=new struct artikel;
		erster_artikel-&gt;name=neuer_artikel.name;
		erster_artikel-&gt;next=NULL;
		letzter_artikel=erster_artikel;
	}
}
void artikel_ausgeben(void){
	if(erster_artikel!=NULL){
		struct artikel *aktuell_ausgegebener_artikel=erster_artikel;
		unsigned int cnt=0;
		do{
			std::cout&lt;&lt;++cnt&lt;&lt;&quot;-ter Artikel in Liste: &quot;&lt;&lt;aktuell_ausgegebener_artikel-&gt;name&lt;&lt;std::endl;
			aktuell_ausgegebener_artikel=aktuell_ausgegebener_artikel-&gt;next;
		}while(aktuell_ausgegebener_artikel!=NULL);
	}
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1495898</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1495898</guid><dc:creator><![CDATA[goto anywhere*]]></dc:creator><pubDate>Mon, 21 Apr 2008 20:12:32 GMT</pubDate></item><item><title><![CDATA[Reply to Einfache Verkettete Liste on Mon, 21 Apr 2008 20:16:04 GMT]]></title><description><![CDATA[<p>In diesem Forum gibt es auch eine Menge Threads, die sich mit dem Thema beschäftigen. Schau Dir mal <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-196894-and-highlight-is-node.html" rel="nofollow">dieses Posting über Listen</a> an und folge auch den angegebenen Links.<br />
Und natürlich <a href="http://de.wikipedia.org/wiki/Liste_%28Datenstruktur%29" rel="nofollow">Wikipedia hat auch was über Listen</a>.</p>
<p>Hier noch eine Überarbeitung Deines ersten Entwurfs.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
// #include &lt;stdlib.h&gt; braucht es nicht
using namespace std;

class Element
{
public:
    // get-setter kannst Du hier ausnahmsweise weglassen
    //  wichtiger ist ein Konstruktor
    Element( int wert, Element* naechster )
        : m_wert( wert )
        , m_pNeachstesElement( naechster )
    {}
    int m_wert;
    Element *m_pNeachstesElement;
};

class Liste // die eigentliche Liste mit 'vielen' Element'en
{
public:
    Liste() : m_kopf(0) {} // ganz wichtig; Member im Konstruktor initialisieren
    void push_front( int wert ) // vorne einfügen
    {
        m_kopf = new Element( wert, m_kopf );
    }
    void print( std::ostream&amp; out ) // Ausgabe
    {
        for( Element* p = m_kopf; p; p = p-&gt;m_pNeachstesElement )
            out &lt;&lt; p-&gt;m_wert &lt;&lt; &quot; &quot;;
    }
private:
    Element* m_kopf; // Zeiger auf das erste Element
};

int main()
{
    Liste l;
    l.push_front( 4 );
    l.push_front( 5 );
    cout&lt;&lt;&quot;Liste 1: &quot;;
    l.print( cout );
    cout &lt;&lt; endl;
    cin.get();
    return 0;
}
</code></pre>
<p>Da fehlt natürlich noch einiges - Destruktor, Copy-Konstruktor, Zuweisungsoperator und etliche Listen-Methoden.</p>
<p>Falls Du konkrete Fragen hast, so melde Dich nochmal.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1495904</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1495904</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Mon, 21 Apr 2008 20:16:04 GMT</pubDate></item><item><title><![CDATA[Reply to Einfache Verkettete Liste on Mon, 21 Apr 2008 20:16:32 GMT]]></title><description><![CDATA[<p>Vevusio schrieb:</p>
<blockquote>
<p>ka, lies dir mal dieses durch vllt<br />
<a href="http://richardbowles.tripod.com/cpp/linklist/linklist.htm" rel="nofollow">http://richardbowles.tripod.com/cpp/linklist/linklist.htm</a></p>
<p>das hat viele grafiken und scheint die einzelnen schritte wie element einfügen und element löschen gut zu erklären</p>
</blockquote>
<p>ja, aber die implementierung die rauskommt ist leider trotzdem bescheiden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1495905</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1495905</guid><dc:creator><![CDATA[Jester]]></dc:creator><pubDate>Mon, 21 Apr 2008 20:16:32 GMT</pubDate></item><item><title><![CDATA[Reply to Einfache Verkettete Liste on Mon, 21 Apr 2008 20:18:15 GMT]]></title><description><![CDATA[<p>goto anywhere schrieb:</p>
<blockquote>
<pre><code class="language-cpp">struct artikel{
    std::string name;
    struct artikel *next;
};
</code></pre>
</blockquote>
<p>Doch du hast eine Klasse benutzt. :p</p>
<p>Und dann noch goto für ne Schleife... Schäme dich. <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/1495908</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1495908</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Mon, 21 Apr 2008 20:18:15 GMT</pubDate></item><item><title><![CDATA[Reply to Einfache Verkettete Liste on Mon, 21 Apr 2008 20:27:12 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<p>goto anywhere schrieb:</p>
<blockquote>
<pre><code class="language-cpp">struct artikel{
    std::string name;
    struct artikel *next;
};
</code></pre>
</blockquote>
<p>Doch du hast eine Klasse benutzt. :p</p>
<p>Und dann noch goto für ne Schleife... Schäme dich. <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>
</blockquote>
<p>Ich glaube, das einzige was ich unter Benutzerdaten angegeben habe ist, dass ich Elektroniker (in Ausbildung) bin. Ich habe also mit &quot;selber Compiler spielen&quot; und Assembler angefangen..., deshalb wohl bin ich dauernt versucht, so Sachen wie goto und vor allem Pointer in rauen Mengen zu verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1495914</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1495914</guid><dc:creator><![CDATA[goto anywhere*]]></dc:creator><pubDate>Mon, 21 Apr 2008 20:27:12 GMT</pubDate></item><item><title><![CDATA[Reply to Einfache Verkettete Liste on Mon, 21 Apr 2008 20:34:37 GMT]]></title><description><![CDATA[<p>Vevusio schrieb:</p>
<blockquote>
<p>wow dieses tutorial beispiel ist auch total beschissen</p>
<p>ka, lies dir mal dieses durch vllt<br />
<a href="http://richardbowles.tripod.com/cpp/linklist/linklist.htm" rel="nofollow">http://richardbowles.tripod.com/cpp/linklist/linklist.htm</a></p>
<p>das hat viele grafiken und scheint die einzelnen schritte wie element einfügen und element löschen gut zu erklären</p>
</blockquote>
<p>diese seite bekommt eine 7/10 auf der augenkrebs-skala von mir</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1495924</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1495924</guid><dc:creator><![CDATA[sothis_]]></dc:creator><pubDate>Mon, 21 Apr 2008 20:34:37 GMT</pubDate></item><item><title><![CDATA[Reply to Einfache Verkettete Liste on Mon, 21 Apr 2008 20:34:53 GMT]]></title><description><![CDATA[<p>goto anywhere; schrieb:</p>
<blockquote>
<p>Mit Klassen und so habe ich nicht gearbeitet (konnte ich ja damals noch nicht <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>
</blockquote>
<p>Ich kann jedem Anfänger, der sich in C++ einarbeiten will, nur wärmsten empfehlen: zuerst in Klassen einarbeiten (insbesondere Konstruktor und Destruktor) und danach erst versuchen eine Liste zu programmieren.</p>
<p>Siehe dazu auch <a href="http://c-plusplus.net/forum/viewtopic-var-p-is-1324660.html#1324660" rel="nofollow">meine Verzweifelung am Anfang dieses Beitrags</a> <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>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1495926</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1495926</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Mon, 21 Apr 2008 20:34:53 GMT</pubDate></item><item><title><![CDATA[Reply to Einfache Verkettete Liste on Tue, 22 Apr 2008 14:09:21 GMT]]></title><description><![CDATA[<p>Dann danke ich euch allen schonmal!<br />
Werde mich heute ein wenig tiefer darin einarbeiten und wenn ich fragen habe stell ich sie hier ^^</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1496218</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1496218</guid><dc:creator><![CDATA[Thunaer]]></dc:creator><pubDate>Tue, 22 Apr 2008 14:09:21 GMT</pubDate></item></channel></rss>