<?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[Linked List, Problem beim löschen eines Elements]]></title><description><![CDATA[<p>Ich hab mir gedacht ich schreib auch mal eine verkettete Liste ... ich hab das früher immer nicht gecheckt und dachte eigentlich jetzt es durchschaut zu haben <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>Das Problem was ich habe ist das wenn ich beim Entfernen den Pointer des Elements vor dem zu löschenden Element auf das Element nach dem zu löschenden Element setze und dann das Element lösche, der Pointer trotzdem irgendwo ins Nirvana zeigt und die liste quasi an der stelle unterbrochen ist wo man ein element löscht...</p>
<p>Hier mal der Code von dem ListenElement:</p>
<pre><code class="language-cpp">class Element
{
public:
	Element(); //Konstruktor;

	//Variablen / Pointer:
	Element *pNext;
	int data;
};

Element::Element()
{
	pNext=NULL;
	data=0;
}
</code></pre>
<p>Und hier mal der die Linked List Klasse + Code zum entfernen:</p>
<pre><code class="language-cpp">class LinkedList
{
public:
	LinkedList();
	void Add(int data);
	void Remove(int Element);
	int GetNumber(int Element);
	Element *GetPointer(int Element);
	int Size();

private:
	Element *pFirst;
	Element *pLast;
	Element *pActual;
	int size;
};
//----------------------------------------------------------
void LinkedList::Remove(int Element)
{
	pActual=pFirst;

	if(Element==0)
	{
	pFirst=pFirst-&gt;pNext;
	delete[] pActual;
	}
	else
	{
		for(int i=0;i&lt;Element-1;i++)
		{
			pActual=pActual-&gt;pNext;
		}
		cout&lt;&lt;&quot;Vor zu loesch:&quot;&lt;&lt;pActual-&gt;data&lt;&lt;endl;
		cout&lt;&lt;&quot;Nach zu loesch:&quot;&lt;&lt;pActual-&gt;pNext-&gt;pNext-&gt;data&lt;&lt;endl;

		pActual-&gt;pNext=pActual-&gt;pNext-&gt;pNext;
		pActual= pActual-&gt;pNext;
		delete[] pActual;
	}
	size--;
}
</code></pre>
<p>Ich habe mir diese stelle jetzt schon des öffteren angeguckt und ich verstehe einfach nicht wo das Problem ist! Ich hoffe ihr könnt mir da helfen...<br />
Wenn ich das erste Element lösche funzt das übriegens ... und wenn ich das delete weg lasse dann funktioniert das auch nur das ich dann ja speicher &quot;verschenke&quot; <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>Und dann hätte ich da noch eine frage ... wieso kann ich in der Klassen Deklaration einen Pointer auf ein Element machen und in einer der Member Funktionen nicht ? Da sagt er dann immer unbekannter Typ ...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/126794/linked-list-problem-beim-löschen-eines-elements</link><generator>RSS for Node</generator><lastBuildDate>Mon, 24 Aug 2026 21:06:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/126794.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 18 Nov 2005 15:43:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Linked List, Problem beim löschen eines Elements on Fri, 18 Nov 2005 15:43:32 GMT]]></title><description><![CDATA[<p>Ich hab mir gedacht ich schreib auch mal eine verkettete Liste ... ich hab das früher immer nicht gecheckt und dachte eigentlich jetzt es durchschaut zu haben <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>Das Problem was ich habe ist das wenn ich beim Entfernen den Pointer des Elements vor dem zu löschenden Element auf das Element nach dem zu löschenden Element setze und dann das Element lösche, der Pointer trotzdem irgendwo ins Nirvana zeigt und die liste quasi an der stelle unterbrochen ist wo man ein element löscht...</p>
<p>Hier mal der Code von dem ListenElement:</p>
<pre><code class="language-cpp">class Element
{
public:
	Element(); //Konstruktor;

	//Variablen / Pointer:
	Element *pNext;
	int data;
};

Element::Element()
{
	pNext=NULL;
	data=0;
}
</code></pre>
<p>Und hier mal der die Linked List Klasse + Code zum entfernen:</p>
<pre><code class="language-cpp">class LinkedList
{
public:
	LinkedList();
	void Add(int data);
	void Remove(int Element);
	int GetNumber(int Element);
	Element *GetPointer(int Element);
	int Size();

private:
	Element *pFirst;
	Element *pLast;
	Element *pActual;
	int size;
};
//----------------------------------------------------------
void LinkedList::Remove(int Element)
{
	pActual=pFirst;

	if(Element==0)
	{
	pFirst=pFirst-&gt;pNext;
	delete[] pActual;
	}
	else
	{
		for(int i=0;i&lt;Element-1;i++)
		{
			pActual=pActual-&gt;pNext;
		}
		cout&lt;&lt;&quot;Vor zu loesch:&quot;&lt;&lt;pActual-&gt;data&lt;&lt;endl;
		cout&lt;&lt;&quot;Nach zu loesch:&quot;&lt;&lt;pActual-&gt;pNext-&gt;pNext-&gt;data&lt;&lt;endl;

		pActual-&gt;pNext=pActual-&gt;pNext-&gt;pNext;
		pActual= pActual-&gt;pNext;
		delete[] pActual;
	}
	size--;
}
</code></pre>
<p>Ich habe mir diese stelle jetzt schon des öffteren angeguckt und ich verstehe einfach nicht wo das Problem ist! Ich hoffe ihr könnt mir da helfen...<br />
Wenn ich das erste Element lösche funzt das übriegens ... und wenn ich das delete weg lasse dann funktioniert das auch nur das ich dann ja speicher &quot;verschenke&quot; <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>Und dann hätte ich da noch eine frage ... wieso kann ich in der Klassen Deklaration einen Pointer auf ein Element machen und in einer der Member Funktionen nicht ? Da sagt er dann immer unbekannter Typ ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/920757</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/920757</guid><dc:creator><![CDATA[Mortal2006]]></dc:creator><pubDate>Fri, 18 Nov 2005 15:43:32 GMT</pubDate></item><item><title><![CDATA[Reply to Linked List, Problem beim löschen eines Elements on Fri, 18 Nov 2005 15:54:45 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">Element* toBeDeleted = pActual-&gt;pNext;
    pActual-&gt;pNext=pActual-&gt;pNext-&gt;pNext;
    delete toBeDeleted;
</code></pre>
<p>Die [] beim delete gehören da vermutlich nicht hin, da Du wahrscheinlich keine Arrays von Elements erzeugst.<br />
Deine andere Frage verstehe ich nicht, gib am besten ein Beispiel.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/920765</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/920765</guid><dc:creator><![CDATA[niemand]]></dc:creator><pubDate>Fri, 18 Nov 2005 15:54:45 GMT</pubDate></item><item><title><![CDATA[Reply to Linked List, Problem beim löschen eines Elements on Fri, 18 Nov 2005 15:57:19 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">Element* asdf = pActual;
pActual = asdf-&gt;pNext;
asdf-&gt;pNext = pActual-&gt;pNext;
delete pActual;
</code></pre>
<p>Die Reihenfolge stimmte nicht, so müsste es funktionieren. Du hast zuerst den pNext Pointer verändert und bist dann diesem neuen pNext Pointer nachgegangen.<br />
Der Zeiger auf das aktuelle (englisch current!) Element gehört nicht in die Klasse, sondern in die Methode, da er nur dort verwendet wird.<br />
Außerdem sind die Elementpointer doch eigentlich keine Arrays, also delete statt delete[]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/920768</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/920768</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Fri, 18 Nov 2005 15:57:19 GMT</pubDate></item><item><title><![CDATA[Reply to Linked List, Problem beim löschen eines Elements on Fri, 18 Nov 2005 16:10:36 GMT]]></title><description><![CDATA[<p>Oh... jo das mit dem löschen funktioniert jetzt ... das mir das nicht irgendwann mal aufgefallen ist ... <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>Aber ich kann in der Methode keinen Pointer erstellen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /><br />
wenn ich also dein &quot;Element* asdf&quot; da erstellen möchte sagt der<br />
&quot;error C2065: 'asdf' : nichtdeklarierter Bezeichner&quot;<br />
Ursprünglich wollte ich pCurrent(;)) auch darein packen ging nur nicht ...</p>
<p>Danke schonmal für eure schnelle Hilfe <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/920779</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/920779</guid><dc:creator><![CDATA[Mortal2006]]></dc:creator><pubDate>Fri, 18 Nov 2005 16:10:36 GMT</pubDate></item><item><title><![CDATA[Reply to Linked List, Problem beim löschen eines Elements on Fri, 18 Nov 2005 18:46:22 GMT]]></title><description><![CDATA[<p>Weil Du den Übergabeparameter auch Element genannt hast ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/920903</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/920903</guid><dc:creator><![CDATA[niemand]]></dc:creator><pubDate>Fri, 18 Nov 2005 18:46:22 GMT</pubDate></item><item><title><![CDATA[Reply to Linked List, Problem beim löschen eines Elements on Fri, 18 Nov 2005 18:55:37 GMT]]></title><description><![CDATA[<p>Doh!... wie ungeschickt <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>
<p>Danke <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/920920</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/920920</guid><dc:creator><![CDATA[Mortal2006]]></dc:creator><pubDate>Fri, 18 Nov 2005 18:55:37 GMT</pubDate></item></channel></rss>