<?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[Ein Datenelement aus einer (Zeiger-&amp;gt;Zeiger) LISTE löschen]]></title><description><![CDATA[<p>Hallo,</p>
<p>(Ein Datenelement aus einer (Zeiger-&gt;Zeiger) LISTE löschen &quot;WICHTIG&quot;)<br />
muss bis Donnerstag diese Aufgabe fertig stellen, bei dem löschen einer KontoNr aus der Liste bekomme ich immer Fehler beim wieder auslesen.<br />
Schaut es euch einfach mal an. Vielen Dank!<br />
Ich glaube das irgendein Zeiger auf freien nicht zugewiesenen Speicher zeigt...<br />
Der Aufruf des Löschvorganges ist als Fett markiert(darunter steht der Code)</p>
<p>Vielen Dank<br />
Thomas</p>
<p>Hier das Programm (C++BuiderX):</p>
<pre><code>/*Blatt 2; Aufgabe 4
  Schreiben Sie eine kleine Kontenverwaltung für eine Bank. Diese besteht aus dem Anfang der Liste und folgenden Funktionen:
  - Einfügen am Ende der Liste
  - Entfernen eines durch die Kontonummer gekennzeichneten Kontos aus der Liste
  - Löschen der gesamten Liste
  Gruppe: Thomas Schäfer und Volker Stoffel

  Anmerkung:  Wir haben uns mit dieser Aufgabe ein ganzes Wochenende beschäftigt
              und bekommen das löschen eines Eintrages aus der Liste nicht hin!
              Die Schleife des Löschvorganges läuft einwandfrei, nur beim erneuten
              auslesen stößt die Schleife auf einen falschen Zeiger, warum? Keine
              Ahnung! Wir hoffen jetzt einfach mal auf Ihre Bonuspunkte :-)
*/

#include &lt;iostream&gt;
#include &lt;stdio.h&gt;
//#include &lt;conio.h&gt;
//#include &lt;stdlib.h&gt;
//#include &lt;process.h&gt;
using namespace std;

class cKonto
{
  private:
    int KontoNummer;
    float KontoStand;
    cKonto *AnderesKonto;
  public:
    cKonto(void);//Konstruktor
    void Setze(int KtoNr, float KtoStd);
    int HoleKontoNr(void);
    float HoleKontoStd(void);
    cKonto *HoleNaechste(void);
    void ZeigeAufNaechste(cKonto *ZeigeDahin);
};

cKonto::cKonto(void)//Konstruktor
{
  KontoNummer = 0;
  AnderesKonto = NULL;
}

// Diese Methode setzt die Größe der Box auf die Parameter
void cKonto::Setze(int KtoNr, float KtoStd)
{
  KontoNummer = KtoNr;
  KontoStand = KtoStd;
}

// Diese Methode gibt die KontoNr zurück
int cKonto::HoleKontoNr(void)
{
  return (KontoNummer);
}
// Diese Methode gibt den Kontostand zurück
float cKonto::HoleKontoStd(void)
{
  return (KontoStand);
}

// Diese Methode lässt den Zeiger auf den Parameter zeigen
void cKonto::ZeigeAufNaechste(cKonto *ZeigeDahin)
{
  AnderesKonto = ZeigeDahin;
}

// Diese Methode gibt die Box, auf die die momentane zeigt, zurück
cKonto *cKonto::HoleNaechste(void)
{
  return AnderesKonto;
}

int main()
{
  cKonto *Start = NULL;       // Zeigt immer auf den Beginn der Liste
  cKonto *Temp;		    // Arbeitstier
  cKonto *KontoZeiger;	    // Für das Erzeugen
  cKonto *ZW;

  int zaehler;
  int KontoNr;
  int Aktion;

// Erzeuge die Liste
for (int Index = 0 ; Index &lt; 4 ; Index++)
{
  KontoZeiger = new cKonto;
  KontoZeiger-&gt;Setze(Index, (150.05 + (Index + 8)));

  if (Start == NULL)
  {
    Start = KontoZeiger;		     // Erstes Element in der Liste
  }
  else
  {
    Temp-&gt;ZeigeAufNaechste(KontoZeiger); // Zusätzliches Element
  }
  Temp = KontoZeiger;
}//Ende Erzeugen Liste

do{
     // system(&quot;CLS&quot;); //geht leider nicht
     if (Start!=NULL)
     {
       // Gib die Liste aus
       Temp = Start;
       do
       {
         cout &lt;&lt; &quot;KontoNr: &quot; &lt;&lt; Temp-&gt;HoleKontoNr() &lt;&lt; &quot;\t&quot;;
         cout &lt;&lt; &quot;KontoStand: &quot; &lt;&lt; Temp-&gt;HoleKontoStd() &lt;&lt; &quot;\n&quot;;
         Temp = Temp-&gt;HoleNaechste();
       } while (Temp != NULL);
     }//ende if

    cout&lt;&lt;&quot;\nNeues Konto am Ende der Liste einfügen? | 0 |\n&quot;;
    cout&lt;&lt;&quot;Entfernen eines Kontos durch Konto Nr?  | 1 |\n&quot;;
    cout&lt;&lt;&quot;Löschen der gesamten Liste?             | 2 |\n&quot;;

    cin&gt;&gt;Aktion;

    switch (Aktion)
    {

       case 0:
         Temp = KontoZeiger;
         zaehler = Temp-&gt;HoleKontoNr();
         zaehler++;

         KontoZeiger = new cKonto;
         KontoZeiger-&gt;Setze(zaehler, (zaehler+88.5));

         if (Start == NULL)
         {
            Start = KontoZeiger;		     // Erstes Element in der Liste
         }
         else
         {
            Temp-&gt;ZeigeAufNaechste(KontoZeiger); // Zusätzliches Element
         }

      Temp = KontoZeiger;
    break;

    [b]case 1: // Entfernen eines Kontos durch Konto Nummmer[/b]

      //clrscr();
      cout&lt;&lt;&quot;Entfernen eines Kontos:\n\n&quot;;
      cout&lt;&lt;&quot;Bitte die Kontonummer angeben die gelöscht werden soll:\n&quot;;
      cin&gt;&gt;KontoNr;

   Temp = Start;

     while (Temp != NULL)
     {
         if ((Temp-&gt;HoleKontoNr())==KontoNr)
         {
            ZW=Temp-&gt;HoleNaechste();
            delete Temp;
            Temp =ZW;

         }else
         {  Temp = Temp-&gt;HoleNaechste();

           }
     }

    break;
  case 2: // Löschen der gesamten Liste
    cout&lt;&lt;&quot;\nListe gelöscht\n&quot;;

    Temp = Start;
    do
    {
      Temp = Temp-&gt;HoleNaechste();
      delete Start;
      Start = Temp;
    } while (Temp != NULL);

  break;
}

}while((Aktion==0)||(Aktion==1)||(Aktion==2));

// Lösche die Liste um sicher zu gehen
Temp = Start;
do
{
 Temp = Temp-&gt;HoleNaechste();
 delete Start;
 Start = Temp;
} while (Temp != NULL);

return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/130223/ein-datenelement-aus-einer-zeiger-gt-zeiger-liste-löschen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 26 Aug 2026 13:30:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/130223.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 20 Dec 2005 22:18:39 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Ein Datenelement aus einer (Zeiger-&amp;gt;Zeiger) LISTE löschen on Wed, 21 Dec 2005 07:30:14 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>(Ein Datenelement aus einer (Zeiger-&gt;Zeiger) LISTE löschen &quot;WICHTIG&quot;)<br />
muss bis Donnerstag diese Aufgabe fertig stellen, bei dem löschen einer KontoNr aus der Liste bekomme ich immer Fehler beim wieder auslesen.<br />
Schaut es euch einfach mal an. Vielen Dank!<br />
Ich glaube das irgendein Zeiger auf freien nicht zugewiesenen Speicher zeigt...<br />
Der Aufruf des Löschvorganges ist als Fett markiert(darunter steht der Code)</p>
<p>Vielen Dank<br />
Thomas</p>
<p>Hier das Programm (C++BuiderX):</p>
<pre><code>/*Blatt 2; Aufgabe 4
  Schreiben Sie eine kleine Kontenverwaltung für eine Bank. Diese besteht aus dem Anfang der Liste und folgenden Funktionen:
  - Einfügen am Ende der Liste
  - Entfernen eines durch die Kontonummer gekennzeichneten Kontos aus der Liste
  - Löschen der gesamten Liste
  Gruppe: Thomas Schäfer und Volker Stoffel

  Anmerkung:  Wir haben uns mit dieser Aufgabe ein ganzes Wochenende beschäftigt
              und bekommen das löschen eines Eintrages aus der Liste nicht hin!
              Die Schleife des Löschvorganges läuft einwandfrei, nur beim erneuten
              auslesen stößt die Schleife auf einen falschen Zeiger, warum? Keine
              Ahnung! Wir hoffen jetzt einfach mal auf Ihre Bonuspunkte :-)
*/

#include &lt;iostream&gt;
#include &lt;stdio.h&gt;
//#include &lt;conio.h&gt;
//#include &lt;stdlib.h&gt;
//#include &lt;process.h&gt;
using namespace std;

class cKonto
{
  private:
    int KontoNummer;
    float KontoStand;
    cKonto *AnderesKonto;
  public:
    cKonto(void);//Konstruktor
    void Setze(int KtoNr, float KtoStd);
    int HoleKontoNr(void);
    float HoleKontoStd(void);
    cKonto *HoleNaechste(void);
    void ZeigeAufNaechste(cKonto *ZeigeDahin);
};

cKonto::cKonto(void)//Konstruktor
{
  KontoNummer = 0;
  AnderesKonto = NULL;
}

// Diese Methode setzt die Größe der Box auf die Parameter
void cKonto::Setze(int KtoNr, float KtoStd)
{
  KontoNummer = KtoNr;
  KontoStand = KtoStd;
}

// Diese Methode gibt die KontoNr zurück
int cKonto::HoleKontoNr(void)
{
  return (KontoNummer);
}
// Diese Methode gibt den Kontostand zurück
float cKonto::HoleKontoStd(void)
{
  return (KontoStand);
}

// Diese Methode lässt den Zeiger auf den Parameter zeigen
void cKonto::ZeigeAufNaechste(cKonto *ZeigeDahin)
{
  AnderesKonto = ZeigeDahin;
}

// Diese Methode gibt die Box, auf die die momentane zeigt, zurück
cKonto *cKonto::HoleNaechste(void)
{
  return AnderesKonto;
}

int main()
{
  cKonto *Start = NULL;       // Zeigt immer auf den Beginn der Liste
  cKonto *Temp;		    // Arbeitstier
  cKonto *KontoZeiger;	    // Für das Erzeugen
  cKonto *ZW;

  int zaehler;
  int KontoNr;
  int Aktion;

// Erzeuge die Liste
for (int Index = 0 ; Index &lt; 4 ; Index++)
{
  KontoZeiger = new cKonto;
  KontoZeiger-&gt;Setze(Index, (150.05 + (Index + 8)));

  if (Start == NULL)
  {
    Start = KontoZeiger;		     // Erstes Element in der Liste
  }
  else
  {
    Temp-&gt;ZeigeAufNaechste(KontoZeiger); // Zusätzliches Element
  }
  Temp = KontoZeiger;
}//Ende Erzeugen Liste

do{
     // system(&quot;CLS&quot;); //geht leider nicht
     if (Start!=NULL)
     {
       // Gib die Liste aus
       Temp = Start;
       do
       {
         cout &lt;&lt; &quot;KontoNr: &quot; &lt;&lt; Temp-&gt;HoleKontoNr() &lt;&lt; &quot;\t&quot;;
         cout &lt;&lt; &quot;KontoStand: &quot; &lt;&lt; Temp-&gt;HoleKontoStd() &lt;&lt; &quot;\n&quot;;
         Temp = Temp-&gt;HoleNaechste();
       } while (Temp != NULL);
     }//ende if

    cout&lt;&lt;&quot;\nNeues Konto am Ende der Liste einfügen? | 0 |\n&quot;;
    cout&lt;&lt;&quot;Entfernen eines Kontos durch Konto Nr?  | 1 |\n&quot;;
    cout&lt;&lt;&quot;Löschen der gesamten Liste?             | 2 |\n&quot;;

    cin&gt;&gt;Aktion;

    switch (Aktion)
    {

       case 0:
         Temp = KontoZeiger;
         zaehler = Temp-&gt;HoleKontoNr();
         zaehler++;

         KontoZeiger = new cKonto;
         KontoZeiger-&gt;Setze(zaehler, (zaehler+88.5));

         if (Start == NULL)
         {
            Start = KontoZeiger;		     // Erstes Element in der Liste
         }
         else
         {
            Temp-&gt;ZeigeAufNaechste(KontoZeiger); // Zusätzliches Element
         }

      Temp = KontoZeiger;
    break;

    [b]case 1: // Entfernen eines Kontos durch Konto Nummmer[/b]

      //clrscr();
      cout&lt;&lt;&quot;Entfernen eines Kontos:\n\n&quot;;
      cout&lt;&lt;&quot;Bitte die Kontonummer angeben die gelöscht werden soll:\n&quot;;
      cin&gt;&gt;KontoNr;

   Temp = Start;

     while (Temp != NULL)
     {
         if ((Temp-&gt;HoleKontoNr())==KontoNr)
         {
            ZW=Temp-&gt;HoleNaechste();
            delete Temp;
            Temp =ZW;

         }else
         {  Temp = Temp-&gt;HoleNaechste();

           }
     }

    break;
  case 2: // Löschen der gesamten Liste
    cout&lt;&lt;&quot;\nListe gelöscht\n&quot;;

    Temp = Start;
    do
    {
      Temp = Temp-&gt;HoleNaechste();
      delete Start;
      Start = Temp;
    } while (Temp != NULL);

  break;
}

}while((Aktion==0)||(Aktion==1)||(Aktion==2));

// Lösche die Liste um sicher zu gehen
Temp = Start;
do
{
 Temp = Temp-&gt;HoleNaechste();
 delete Start;
 Start = Temp;
} while (Temp != NULL);

return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/946688</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/946688</guid><dc:creator><![CDATA[schambes]]></dc:creator><pubDate>Wed, 21 Dec 2005 07:30:14 GMT</pubDate></item><item><title><![CDATA[Reply to Ein Datenelement aus einer (Zeiger-&amp;gt;Zeiger) LISTE löschen on Tue, 20 Dec 2005 22:25:00 GMT]]></title><description><![CDATA[<p>sowas wird normalerweise so gemacht:</p>
<pre><code class="language-cpp">this-&gt;prev-&gt;next = this-&gt;next;
// this-&gt;next-&gt;pre = this-&gt;prev; // bei doppelt verlinkten listen
delete this;
</code></pre>
<p>randfaelle (prev/next == NULL oder this als einziges element) sind dabei noch gesondert zu behandeln.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/946693</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/946693</guid><dc:creator><![CDATA[c.rackwitz]]></dc:creator><pubDate>Tue, 20 Dec 2005 22:25:00 GMT</pubDate></item><item><title><![CDATA[Reply to Ein Datenelement aus einer (Zeiger-&amp;gt;Zeiger) LISTE löschen on Wed, 21 Dec 2005 00:37:52 GMT]]></title><description><![CDATA[<p>Danke schonmal für die promte Antwort, allerdings komme ich mit deinem Beispiel noch nicht ganz klar,<br />
wie genau müsste das dann in meinem Beispiel aussehen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/946733</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/946733</guid><dc:creator><![CDATA[schambes]]></dc:creator><pubDate>Wed, 21 Dec 2005 00:37:52 GMT</pubDate></item><item><title><![CDATA[Reply to Ein Datenelement aus einer (Zeiger-&amp;gt;Zeiger) LISTE löschen on Wed, 21 Dec 2005 06:15:03 GMT]]></title><description><![CDATA[<p>mal dir mal die liste auf. benenne die einzelnen zeiger in den objekten.<br />
dann hole ein element raus und schau dir an, wie du die zeiger umlegen musst.</p>
<p>vergiss nicht, das rausgelöste, wie crackwitz es zeigt, zu löschen.</p>
<p>blatt papier ist hier notwendig :xmas2:</p>
]]></description><link>https://www.c-plusplus.net/forum/post/946750</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/946750</guid><dc:creator><![CDATA[elise]]></dc:creator><pubDate>Wed, 21 Dec 2005 06:15:03 GMT</pubDate></item><item><title><![CDATA[Reply to Ein Datenelement aus einer (Zeiger-&amp;gt;Zeiger) LISTE löschen on Wed, 21 Dec 2005 07:30:41 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile.php?mode=viewprofile&amp;u=437" rel="nofollow">Jansen</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=2" rel="nofollow">VCL/CLX (Borland C++ Builder)</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=15" rel="nofollow">C++</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic.php?t=39405" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/946771</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/946771</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Wed, 21 Dec 2005 07:30:41 GMT</pubDate></item></channel></rss>