<?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[Doppelt verkettete Liste]]></title><description><![CDATA[<p>Guten Abend,</p>
<p>ich habe die Aufgabe, ein C++ zu schreiben, welches eine verkettete Liste beinhaltet.</p>
<p>In diesem Forum existieren schon einige Tutorials zu diesem Thema, die sicherlich gut geschrieben und hervorragend durchdacht sind, jedoch immer Klassen und/oder Templates beinhalten, welche noch nicht Teil unseres &quot;Wortschatzes&quot; sind.<br />
Wir sollen diese Aufgabe mit Strukturen, Zeigern und Strings lösen.</p>
<p>Ansich habe ich das Prinzip, welches sich hinter den Listen verbirgt, schon verstanden, allerdings bin ich nicht dazu in der Lage, das programmiertechnisch korrekt auszudrücken.</p>
<p>Bisher kann ich folgenden (kläglichen) Ansatz vorweisen:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;

using namespace std;

struct datum
{
	int tag;
	int monat;
	int jahr;
};

struct angestellt
{
		std::string name;
		std::string vorname;
		struct datum alter;
		struct datum eingestellt;
		long gehalt;
		struct angestellt *pNext;
		struct angestellt *pPrev;
};

int main()
{
angestellt *pNeuerSklave = new angestellt; // Initialisiert das die Liste?

}
</code></pre>
<p>Ich weiß, dass das noch nicht viel ist, allerdings wäre ich über jeden kontruktiven Rat sehr erfreut.</p>
<p>Also, Danke schonmal im Voraus &amp; einen schönen Sonntag Abend noch.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/180782/doppelt-verkettete-liste</link><generator>RSS for Node</generator><lastBuildDate>Mon, 21 Sep 2026 22:34:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/180782.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 06 May 2007 16:16:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Doppelt verkettete Liste on Sun, 06 May 2007 16:16:29 GMT]]></title><description><![CDATA[<p>Guten Abend,</p>
<p>ich habe die Aufgabe, ein C++ zu schreiben, welches eine verkettete Liste beinhaltet.</p>
<p>In diesem Forum existieren schon einige Tutorials zu diesem Thema, die sicherlich gut geschrieben und hervorragend durchdacht sind, jedoch immer Klassen und/oder Templates beinhalten, welche noch nicht Teil unseres &quot;Wortschatzes&quot; sind.<br />
Wir sollen diese Aufgabe mit Strukturen, Zeigern und Strings lösen.</p>
<p>Ansich habe ich das Prinzip, welches sich hinter den Listen verbirgt, schon verstanden, allerdings bin ich nicht dazu in der Lage, das programmiertechnisch korrekt auszudrücken.</p>
<p>Bisher kann ich folgenden (kläglichen) Ansatz vorweisen:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;

using namespace std;

struct datum
{
	int tag;
	int monat;
	int jahr;
};

struct angestellt
{
		std::string name;
		std::string vorname;
		struct datum alter;
		struct datum eingestellt;
		long gehalt;
		struct angestellt *pNext;
		struct angestellt *pPrev;
};

int main()
{
angestellt *pNeuerSklave = new angestellt; // Initialisiert das die Liste?

}
</code></pre>
<p>Ich weiß, dass das noch nicht viel ist, allerdings wäre ich über jeden kontruktiven Rat sehr erfreut.</p>
<p>Also, Danke schonmal im Voraus &amp; einen schönen Sonntag Abend noch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1279753</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1279753</guid><dc:creator><![CDATA[goetz]]></dc:creator><pubDate>Sun, 06 May 2007 16:16:29 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelt verkettete Liste on Sun, 06 May 2007 16:24:28 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">struct datum
{
    int tag;
    int monat;
    int jahr;
};

struct angestellt
{
        std::string name;
        std::string vorname;
        datum alter;  // du meinst eher geburtsdatum?
        datum eingestellt;
        long gehalt;
};

// neu:
struct listitem
{
  angestellt data;
  listitem* prev;
  listitem* next;
}

struct liste
{
  listitem* first;
  listitem* current;
}

// das musst du jetzt schreiben:
void FuegeAnListeAn(liste&amp; l, const angestellt&amp; data)
{

}

void FuegeInListeEin(liste&amp; l, const angestellt&amp; data)
{

}

// und eben noch die anderen funktionen. Eine schreib ich dir :)
liste ErstelleListe()
{
  liste l;  
  l.first = NULL;    // Liste enthält noch keine elemente
  l.current = NULL;  // Aktueller zeiger zeigt auf kein element, weil keins enthalten ist
  return l;
}
</code></pre>
<p>allerdings ist der code nicht schön, aber in der schule habt ihr es wohl so gelernt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /><br />
Die List sollte eine eigene Klasse mit methoden FuegeAn, Loesche usw. sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1279759</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1279759</guid><dc:creator><![CDATA[Maxi]]></dc:creator><pubDate>Sun, 06 May 2007 16:24:28 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelt verkettete Liste on Sun, 06 May 2007 16:31:08 GMT]]></title><description><![CDATA[<p>Ja, ich werde mich da mal durcharbeiten... vielen Dank erstmal!</p>
<p>Unser Prof versorgt uns leider sehr spärlich mit Informationen... Aber ich denke, das wird mir helfen <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/1279766</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1279766</guid><dc:creator><![CDATA[goetz]]></dc:creator><pubDate>Sun, 06 May 2007 16:31:08 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelt verkettete Liste on Sun, 06 May 2007 16:40:21 GMT]]></title><description><![CDATA[<p>Was verstehst du überhaupt unter Liste?? Wenn ich das hier anschaue:</p>
<blockquote>
<pre><code class="language-cpp">angestellt *pNeuerSklave = new angestellt; // Initialisiert das die Liste?
</code></pre>
</blockquote>
<p>könnte man auf die Idee kommen du willst das hier erreichen:</p>
<pre><code class="language-cpp">angestellt* pNeuerSklave  = new angestellt[3]; //3 neue Sklaven
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1279778</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1279778</guid><dc:creator><![CDATA[kaffee]]></dc:creator><pubDate>Sun, 06 May 2007 16:40:21 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelt verkettete Liste on Sun, 06 May 2007 16:43:15 GMT]]></title><description><![CDATA[<p>nein nein, das war ehrlich gesagt nur geraten von mir...</p>
<p>Aber erstellst du denn damit nicht ein array? Oder bin ich da völlig auf dem Holzpfad?</p>
<pre><code class="language-cpp">angestellt* pNeuerSklave  = new angestellt[3]; //Array...?
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1279781</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1279781</guid><dc:creator><![CDATA[goetz]]></dc:creator><pubDate>Sun, 06 May 2007 16:43:15 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelt verkettete Liste on Sun, 06 May 2007 16:45:32 GMT]]></title><description><![CDATA[<p>Was ist eigentlich der Unterschied zwischen dem:</p>
<pre><code class="language-cpp">struct listitem
{
  angestellt data;
  listitem* prev;
  listitem* next;
};
</code></pre>
<p>und dem:</p>
<pre><code class="language-cpp">struct angestellt
{
        std::string name;
        std::string vorname;
        datum alter;  // du meinst eher geburtsdatum?
        datum eingestellt;
        long gehalt;
};
</code></pre>
<p>Hätte ich listitem nicht auch in angestellt packen können? Oder geht das verfahrenstechnisch nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1279785</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1279785</guid><dc:creator><![CDATA[goetz]]></dc:creator><pubDate>Sun, 06 May 2007 16:45:32 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelt verkettete Liste on Sun, 06 May 2007 16:49:09 GMT]]></title><description><![CDATA[<p>kurzer Hinweis: Wenn du</p>
<pre><code class="language-cpp">using namespace std;
</code></pre>
<p>machst<br />
musst du <em>string</em> nicht mit <em>std::</em> aufrufen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1279790</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1279790</guid><dc:creator><![CDATA[kaffee]]></dc:creator><pubDate>Sun, 06 May 2007 16:49:09 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelt verkettete Liste on Sun, 06 May 2007 16:50:47 GMT]]></title><description><![CDATA[<p>Jo, stimmt, das wäre ja dann doppelt... danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1279792</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1279792</guid><dc:creator><![CDATA[goetz]]></dc:creator><pubDate>Sun, 06 May 2007 16:50:47 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelt verkettete Liste on Sun, 06 May 2007 17:00:22 GMT]]></title><description><![CDATA[<p>goetz schrieb:</p>
<blockquote>
<p>nein nein, das war ehrlich gesagt nur geraten von mir...</p>
<p>Aber erstellst du denn damit nicht ein array? Oder bin ich da völlig auf dem Holzpfad?</p>
<pre><code class="language-cpp">angestellt* pNeuerSklave  = new angestellt[3]; //Array...?
</code></pre>
</blockquote>
<p>jo, ist eine Art von Array (dynamisch erstellt), kann dann so benutzt werden:</p>
<pre><code class="language-cpp">pNeuerSklave[0].name = &quot;Gerhard&quot;;
pNeuerSklave[1].name = &quot;Heinrich&quot;;
//...
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1279798</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1279798</guid><dc:creator><![CDATA[kaffee]]></dc:creator><pubDate>Sun, 06 May 2007 17:00:22 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelt verkettete Liste on Sun, 06 May 2007 17:42:20 GMT]]></title><description><![CDATA[<p>goetz schrieb:</p>
<blockquote>
<p>Was ist eigentlich der Unterschied zwischen dem:</p>
<pre><code class="language-cpp">struct listitem
{
  angestellt data;
  listitem* prev;
  listitem* next;
};
</code></pre>
<p>und dem:</p>
<pre><code class="language-cpp">struct angestellt
{
        std::string name;
        std::string vorname;
        datum alter;  // du meinst eher geburtsdatum?
        datum eingestellt;
        long gehalt;
};
</code></pre>
<p>Hätte ich listitem nicht auch in angestellt packen können? Oder geht das verfahrenstechnisch nicht?</p>
</blockquote>
<p>Weißt du hierzu zufällig auch was? Hmm...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1279825</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1279825</guid><dc:creator><![CDATA[goetz]]></dc:creator><pubDate>Sun, 06 May 2007 17:42:20 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelt verkettete Liste on Sun, 06 May 2007 18:09:35 GMT]]></title><description><![CDATA[<p>du kannst natürlich auch die daten direkt in listitem packen.<br />
Allderings hab ich es gerne, wenn Nutzdaten von Verwaltungsdaten getrennt sind.<br />
So kannst du später leichter eine andere Lsite bauen, indem du einfach die datenstruktur änderst und der rest läuft noch (naja fast)<br />
Ist aber keine Pflicht, geht auch so wie du es hattest.<br />
Aber: ein Angestellter hat ja keinen vorherigen angestellten oder nachfolgenden. Ein listenelemtn hat ein voriges und ein folgendes und die aktuellen daten. So hört sich das besser an <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1279845</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1279845</guid><dc:creator><![CDATA[Maxi]]></dc:creator><pubDate>Sun, 06 May 2007 18:09:35 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelt verkettete Liste on Sun, 06 May 2007 19:41:13 GMT]]></title><description><![CDATA[<p>Aber wie mach ich das denn nun mit der Datensatzerstellung für die Liste? Erstmal muss ich ja Daten haben, die ich an die Liste anfügen kann...</p>
<p>Wäre eine Dateneingabe für diese Liste so vorstellbar? Und wenn ja, wie gebe ich die daten aus meiner temporären Struktur-Instanz in meinen (nächsten) Listenknoten?</p>
<pre><code class="language-cpp">liste init()		// Initialisierung der Liste.
{
	liste l;
	l.first = NULL;
	l.current = NULL;
	return l;
}

liste empty(liste&amp; l)	//Soll die Liste wieder löschen.
{
	delete&amp; l;
}

void dataErstellen()
{
	struct angestellt temp;	//temporäre Struktur-Instanz für die Übergabe
	cin &gt;&gt; temp.name;
	cin &gt;&gt; temp.vorname;
	cin &gt;&gt; temp.name;
	cin &gt;&gt; temp.geburtstag.tag;
	cin &gt;&gt; temp.geburtstag.monat;
	cin &gt;&gt; temp.geburtstag.jahr;
	cin &gt;&gt; temp.eingestellt.tag;
	cin &gt;&gt; temp.eingestellt.monat;
	cin &gt;&gt; temp.eingestellt.jahr;
	cin &gt;&gt; temp.gehalt;
}

int main()
{

	init();
	dataErstellen();

}
</code></pre>
<p>Ich weiß, die Dateneingabe ist fast schon kriminell gelöst... aber es geht ja auch erstmal ums Prinzip</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1279918</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1279918</guid><dc:creator><![CDATA[goetz]]></dc:creator><pubDate>Sun, 06 May 2007 19:41:13 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelt verkettete Liste on Sun, 06 May 2007 21:07:33 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">int main()
{

    init(); // hier wird eine liste zurückgegeben, aber die speicherst du nirgendwo
    // Du musst dir die Liste in einer variablen speichern, sonst bringt dein init
    // ncihts:
    liste l = init();

    // Deindataerstellen liest zwar die daten ein, aber damit wird nichts gemacht.
    // entweder du lässt die funktion die eingebenen daten zurückgeben oder du
    // übergibtst der funktin eine refernz auf die liste, damit in der funktion gleich was eingefügt werden kann.
    //dataErstellen();

    // Einfügen in eine liste könnte zB so gehen, wenn dataErstellen die daten zurückgibt
    einfuegen(l, dataErstellen());
}

void einfuegen(liste&amp; l, const data&amp; d)
{
  listitem* item = new listitem;
  item-&gt;next = l.current-&gt;next;
  item-&gt;prev = l.current;

  // achtung, noch überpfeümn obs nith ende der liste ist
  item-&gt;next-&gt;prev = item;
  item-&gt;prev-&gt;next = item;

  l.current = item;
}
</code></pre>
<p>IUSt jetzt unkommentiert, aber ist glaub ich nich so schwer zu verstehne. Am besten aufmalen wo die zeiger hinzeigen und wo sie dann nach der aktion hinzeigen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1279970</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1279970</guid><dc:creator><![CDATA[Maxi]]></dc:creator><pubDate>Sun, 06 May 2007 21:07:33 GMT</pubDate></item></channel></rss>