<?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[verkettete Liste]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>mittlerweile habe ich diesen Code zustandegebracht, der auch brav kompiliert wird, aber aus irgendwelchen Gründen bekomme ich bei der Ausführung einen Speicherzugriffsfehler. Erkennt Jemand das Problem?<br />
Vielen Dank schonmal im Voraus...</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
{
		string name;
		string vorname;
		struct datum geburtstag;
		struct datum eingestellt;
		long gehalt;
};

struct node
{
	struct angestellt data;
	node* prev;
	node* next;
};

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

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;
}

angestellt dataErstellen()
{
	struct angestellt temp;		//temporäre Struktur-Instanz für die Übergabe
	cout &lt;&lt; endl &lt;&lt; &quot;Bitte den Namen des Mitarbeiters eingeben: &quot;;
	cin &gt;&gt; temp.name;
	cout &lt;&lt; endl &lt;&lt; &quot;Bitte den Vornamen des Mitarbeiters eingeben: &quot;;
	cin &gt;&gt; temp.vorname;
	cout &lt;&lt; endl &lt;&lt; &quot;Bitte den Geburtstag des Mitarbeiters eingeben (erst Tag, enter, Monat, enter, Jahr, enter): &quot;;
	cin &gt;&gt; temp.geburtstag.tag;
	cin &gt;&gt; temp.geburtstag.monat;
	cin &gt;&gt; temp.geburtstag.jahr;
	cout &lt;&lt; endl &lt;&lt; &quot;Bitte den Einstellugnstag des Mitarbeiters eingeben (erst Tag, enter, Monat, enter, Jahr, enter): &quot;;
	cin &gt;&gt; temp.eingestellt.tag;
	cin &gt;&gt; temp.eingestellt.monat;
	cin &gt;&gt; temp.eingestellt.jahr;
	cout &lt;&lt; endl &lt;&lt; &quot;Bitte das Gehalt des Mitarbeiters eingeben: &quot;;
	cin &gt;&gt; temp.gehalt;
	cout &lt;&lt; endl &lt;&lt; endl &lt;&lt; &quot;Der Datensatz wird nun der Liste zugefügt&quot;;

	return temp;
}

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

	item-&gt;next-&gt;prev = item;	//Überprüfung
	item-&gt;prev-&gt;next = item;
	l.current = item; 
}

int main()
{
	liste l = init();

	einfuegen(l, dataErstellen());

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/180969/verkettete-liste</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 02:54:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/180969.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 08 May 2007 16:46:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to verkettete Liste on Tue, 08 May 2007 16:46:26 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>mittlerweile habe ich diesen Code zustandegebracht, der auch brav kompiliert wird, aber aus irgendwelchen Gründen bekomme ich bei der Ausführung einen Speicherzugriffsfehler. Erkennt Jemand das Problem?<br />
Vielen Dank schonmal im Voraus...</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
{
		string name;
		string vorname;
		struct datum geburtstag;
		struct datum eingestellt;
		long gehalt;
};

struct node
{
	struct angestellt data;
	node* prev;
	node* next;
};

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

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;
}

angestellt dataErstellen()
{
	struct angestellt temp;		//temporäre Struktur-Instanz für die Übergabe
	cout &lt;&lt; endl &lt;&lt; &quot;Bitte den Namen des Mitarbeiters eingeben: &quot;;
	cin &gt;&gt; temp.name;
	cout &lt;&lt; endl &lt;&lt; &quot;Bitte den Vornamen des Mitarbeiters eingeben: &quot;;
	cin &gt;&gt; temp.vorname;
	cout &lt;&lt; endl &lt;&lt; &quot;Bitte den Geburtstag des Mitarbeiters eingeben (erst Tag, enter, Monat, enter, Jahr, enter): &quot;;
	cin &gt;&gt; temp.geburtstag.tag;
	cin &gt;&gt; temp.geburtstag.monat;
	cin &gt;&gt; temp.geburtstag.jahr;
	cout &lt;&lt; endl &lt;&lt; &quot;Bitte den Einstellugnstag des Mitarbeiters eingeben (erst Tag, enter, Monat, enter, Jahr, enter): &quot;;
	cin &gt;&gt; temp.eingestellt.tag;
	cin &gt;&gt; temp.eingestellt.monat;
	cin &gt;&gt; temp.eingestellt.jahr;
	cout &lt;&lt; endl &lt;&lt; &quot;Bitte das Gehalt des Mitarbeiters eingeben: &quot;;
	cin &gt;&gt; temp.gehalt;
	cout &lt;&lt; endl &lt;&lt; endl &lt;&lt; &quot;Der Datensatz wird nun der Liste zugefügt&quot;;

	return temp;
}

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

	item-&gt;next-&gt;prev = item;	//Überprüfung
	item-&gt;prev-&gt;next = item;
	l.current = item; 
}

int main()
{
	liste l = init();

	einfuegen(l, dataErstellen());

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1281046</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1281046</guid><dc:creator><![CDATA[goetz]]></dc:creator><pubDate>Tue, 08 May 2007 16:46:26 GMT</pubDate></item><item><title><![CDATA[Reply to verkettete Liste on Tue, 08 May 2007 17:28:40 GMT]]></title><description><![CDATA[<p>goetz schrieb:</p>
<blockquote>
<p>Erkennt Jemand das Problem?</p>
</blockquote>
<p>Ja.<br />
Das Problem ist dass Du Deinen Code nicht debuggst sondern den Weg des geringsten Widerstandes wähltst.</p>
<pre><code class="language-cpp">//...
liste init()        // Initialisierung der Liste.
{
//...
    l.current = NULL;
//...
}
//...
void einfuegen(liste&amp; l, const angestellt&amp; d)
{
//...
	item-&gt;next = l.current-&gt;next;
//...
}
//...
int main()
{
	liste l = init();

	einfuegen(l, dataErstellen());
}
</code></pre>
<p>=&gt; (l.current)-&gt;next &lt;=&gt; ((node*)NULL)-&gt;next =&gt; Crash</p>
<p>Grüsse</p>
<p>*this</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1281074</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1281074</guid><dc:creator><![CDATA[Gast++]]></dc:creator><pubDate>Tue, 08 May 2007 17:28:40 GMT</pubDate></item><item><title><![CDATA[Reply to verkettete Liste on Tue, 08 May 2007 18:23:42 GMT]]></title><description><![CDATA[<p>Gast++ schrieb:</p>
<blockquote>
<p>Ja.<br />
Das Problem ist dass Du Deinen Code nicht debuggst sondern den Weg des geringsten Widerstandes wähltst.</p>
</blockquote>
<p>Das stimmt so nicht, ich sehe den Fehler wirklich nicht...</p>
<p>Gast++ schrieb:</p>
<blockquote>
<pre><code class="language-cpp">//...
liste init()        // Initialisierung der Liste.
{
//...
    l.current = NULL;
//...
}
//...
void einfuegen(liste&amp; l, const angestellt&amp; d)
{
//...
	item-&gt;next = l.current-&gt;next;
//...
}
//...
int main()
{
	liste l = init();

	einfuegen(l, dataErstellen());
}
</code></pre>
<p>=&gt; (l.current)-&gt;next &lt;=&gt; ((node*)NULL)-&gt;next =&gt; Crash</p>
</blockquote>
<p>Hmm...ehrlich gesagt verstehe ich nicht so ganz, was du damit meinst, was stimmte denn an meiner Zuordnung nicht? Der erste Node soll doch NULL sein und auf NULL zeigen bei einer Liste, oder nicht? STL sollen wir übrigens nicht einsetzen (Uni-Hausaufgaben) ... sorry, ich stehe gerade total auf dem Schlauch <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="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1281124</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1281124</guid><dc:creator><![CDATA[goetz]]></dc:creator><pubDate>Tue, 08 May 2007 18:23:42 GMT</pubDate></item><item><title><![CDATA[Reply to verkettete Liste on Tue, 08 May 2007 18:36:50 GMT]]></title><description><![CDATA[<p>Das erklär ich Dir dann wenn Du mir erklärst wie Du den Code von Deinen OP überhaupt kompiliert zu haben meinst.</p>
<p>Grüsse</p>
<p>*this</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1281138</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1281138</guid><dc:creator><![CDATA[Gast++]]></dc:creator><pubDate>Tue, 08 May 2007 18:36:50 GMT</pubDate></item><item><title><![CDATA[Reply to verkettete Liste on Tue, 08 May 2007 18:43:38 GMT]]></title><description><![CDATA[<p>Gast++ schrieb:</p>
<blockquote>
<p>Das erklär ich Dir dann wenn Du mir erklärst wie Du den Code von Deinen OP überhaupt kompiliert zu haben meinst.</p>
<p>*this</p>
</blockquote>
<p>g++ ./dateinmane.cpp</p>
<p>bei mir gibts da wirklich keine fehler... ich arbeite auf einer linux-maschine</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1281144</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1281144</guid><dc:creator><![CDATA[goetz]]></dc:creator><pubDate>Tue, 08 May 2007 18:43:38 GMT</pubDate></item><item><title><![CDATA[Reply to verkettete Liste on Tue, 08 May 2007 18:50:15 GMT]]></title><description><![CDATA[<blockquote>
<pre><code class="language-cpp">g++ ./dateinmane.cpp
</code></pre>
</blockquote>
<p>Ach ja?</p>
<pre><code class="language-cpp">liste empty(liste&amp; l)    //Soll die Liste wieder löschen.
{
    delete&amp; l;
}
</code></pre>
<p>Und an dem fehlenden &quot;return&quot; stört sich der g++ nicht?</p>
<p>Grüsse</p>
<p>*this</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1281154</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1281154</guid><dc:creator><![CDATA[Gast++]]></dc:creator><pubDate>Tue, 08 May 2007 18:50:15 GMT</pubDate></item><item><title><![CDATA[Reply to verkettete Liste on Tue, 08 May 2007 18:53:13 GMT]]></title><description><![CDATA[<p>Nein, tut er nicht...<br />
Aber das bringt mich gerade nicht weiter, da die Empty-Funktion nicht das war, was mich interessiert hat.</p>
<p>Trotzdem, vielen Dank</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1281158</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1281158</guid><dc:creator><![CDATA[goetz]]></dc:creator><pubDate>Tue, 08 May 2007 18:53:13 GMT</pubDate></item><item><title><![CDATA[Reply to verkettete Liste on Tue, 08 May 2007 19:01:00 GMT]]></title><description><![CDATA[<p>goetz schrieb:</p>
<blockquote>
<p>Nein, tut er nicht...</p>
</blockquote>
<p>Sollte er aber. Versuch's mal mit &quot;-Wall -pedantic&quot;.</p>
<p>goetz schrieb:</p>
<blockquote>
<p>Aber das bringt mich gerade nicht weiter, da die Empty-Funktion nicht das war, was mich interessiert hat.</p>
</blockquote>
<p>Was dich interessieren sollte hat dir Gast++ vorher schon rausgesucht...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1281162</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1281162</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Tue, 08 May 2007 19:01:00 GMT</pubDate></item><item><title><![CDATA[Reply to verkettete Liste on Tue, 08 May 2007 19:01:14 GMT]]></title><description><![CDATA[<p>goetz schrieb:</p>
<blockquote>
<p>Nein, tut er nicht...<br />
Aber das bringt mich gerade nicht weiter, da die Empty-Funktion nicht das war, was mich interessiert hat.</p>
<p>Trotzdem, vielen Dank</p>
</blockquote>
<p>Zeile 75: Du dereferenzierst einen Nullpointer.</p>
<p>Grüsse</p>
<p>*this</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1281163</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1281163</guid><dc:creator><![CDATA[Gast++]]></dc:creator><pubDate>Tue, 08 May 2007 19:01:14 GMT</pubDate></item></channel></rss>