<?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[Problem mit Doppelt verketteten Listen]]></title><description><![CDATA[<p>He Liebe Community,</p>
<p>Ich stecke grad voll in den Prüfungsvorbereitungen (ITA). Jetz bin ich gerade an den doppelt verketteten Listen steckengeblieben. Nach dem erstellen eines neuem elemeentes in der Liste wird zuerst eine Adresse für den nachfolger des aktuellen objektes belgt, 2 Zeilen darunter hat der Vorgänger wieder keine Adresse. Somit funktioniert das vorblättern in meiner liste nicht.<br />
Aber hier erstmal der code:</p>
<pre><code class="language-cpp">class TLand
{
public:
  String Land;
  TLand *oVor;
  TLand *oNach;
  TLand(String Landname);

};

TLand::TLand(String Landname)
{
  Land  = Landname;
  oVor  = NULL;
  oNach = NULL;
}

TLand *Neu, *Anfang, *Aktuell;

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::btn_neuClick(TObject *Sender)
{
  if(Anfang)
  {
    Neu = new TLand(edt_land-&gt;Text);
    Aktuell-&gt;oVor = Aktuell;
    Aktuell = Neu;
  }
  else
  {
    Neu = new TLand(edt_land-&gt;Text);
    Anfang=Aktuell=Neu ;

  }

}
//---------------------------------------------------------------------------
void __fastcall TForm1::btn_vorClick(TObject *Sender)
{
  if(Aktuell-&gt;oVor&amp;&amp;Anfang)
  {
    Aktuell-&gt;oNach =Aktuell;
    Aktuell =Aktuell-&gt;oVor;

    edt_land-&gt;Text=Aktuell-&gt;Land;
  }
</code></pre>
<p>Was mache ich falsch ?</p>
<p>Danke schonmal im vorhinaus!</p>
<p>mfg<br />
thps</p>
<p>PS: Ich hoffe ich habe in das richtige Forum gepostet.!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/266449/problem-mit-doppelt-verketteten-listen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 03 Sep 2026 07:14:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/266449.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 09 May 2010 11:09:55 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit Doppelt verketteten Listen on Sun, 09 May 2010 11:09:55 GMT]]></title><description><![CDATA[<p>He Liebe Community,</p>
<p>Ich stecke grad voll in den Prüfungsvorbereitungen (ITA). Jetz bin ich gerade an den doppelt verketteten Listen steckengeblieben. Nach dem erstellen eines neuem elemeentes in der Liste wird zuerst eine Adresse für den nachfolger des aktuellen objektes belgt, 2 Zeilen darunter hat der Vorgänger wieder keine Adresse. Somit funktioniert das vorblättern in meiner liste nicht.<br />
Aber hier erstmal der code:</p>
<pre><code class="language-cpp">class TLand
{
public:
  String Land;
  TLand *oVor;
  TLand *oNach;
  TLand(String Landname);

};

TLand::TLand(String Landname)
{
  Land  = Landname;
  oVor  = NULL;
  oNach = NULL;
}

TLand *Neu, *Anfang, *Aktuell;

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::btn_neuClick(TObject *Sender)
{
  if(Anfang)
  {
    Neu = new TLand(edt_land-&gt;Text);
    Aktuell-&gt;oVor = Aktuell;
    Aktuell = Neu;
  }
  else
  {
    Neu = new TLand(edt_land-&gt;Text);
    Anfang=Aktuell=Neu ;

  }

}
//---------------------------------------------------------------------------
void __fastcall TForm1::btn_vorClick(TObject *Sender)
{
  if(Aktuell-&gt;oVor&amp;&amp;Anfang)
  {
    Aktuell-&gt;oNach =Aktuell;
    Aktuell =Aktuell-&gt;oVor;

    edt_land-&gt;Text=Aktuell-&gt;Land;
  }
</code></pre>
<p>Was mache ich falsch ?</p>
<p>Danke schonmal im vorhinaus!</p>
<p>mfg<br />
thps</p>
<p>PS: Ich hoffe ich habe in das richtige Forum gepostet.!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1894593</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1894593</guid><dc:creator><![CDATA[THPS]]></dc:creator><pubDate>Sun, 09 May 2010 11:09:55 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Doppelt verketteten Listen on Sun, 09 May 2010 11:45:32 GMT]]></title><description><![CDATA[<p>So mal aus interesse:</p>
<p>Für was steckst du greade in Prüfungsvorbereitungen?<br />
Ist das dein eigener Code oder hast du es bekommen?</p>
<p>Das Mixen von UI Code und Funktionalität ist ein sehr schlechter Still.</p>
<p>Nachtrag:</p>
<pre><code class="language-cpp">void __fastcall TForm1::btn_vorClick(TObject *Sender) 
{ 
  if(Neu != 0) {
     if(Aktuell == Neu) Aktuell = Anfang;
     else Aktuell = Aktuell-&gt;oVor;

     edt_land-&gt;Text=Aktuell-&gt;Land;
  }
</code></pre>
<p>Allerdings scheinen da mehr fehler zu sein weil deine drei Pointer werden im Code gleichgesetzt:</p>
<pre><code class="language-cpp">Anfang=Aktuell=Neu ;
</code></pre>
<p>Du brauchst aber sowas wie ein Start(Immer auf das erste zeigt), Ende(Immer auf das letzte zeigt) und Current(wie aktuell)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1894606</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1894606</guid><dc:creator><![CDATA[Zeus]]></dc:creator><pubDate>Sun, 09 May 2010 11:45:32 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Doppelt verketteten Listen on Sun, 09 May 2010 11:44:22 GMT]]></title><description><![CDATA[<p>Was sollen btn_neuClick und btn_vorClick genau machen? Ich kann überhaupt nicht erkennen, dass diese etwas tun, was irgendwie mit einem neuen Element oder dem Vorgehen in der Liste zu tun hat. Überhaupt kann ich nicht viel von einer Liste sehen.</p>
<p>btn_neuClick erstellt korrekt ein neues Element, sofern die Liste leer ist. Wenn es aber schon Elemente gibt, machst du wirre Sachen:<br />
Ein neues Element wird erstellt, aber dessen Zeiger werden gar nicht initialisiert. Stattdessen wird das Vorgängereelement des aktuellen Elements ( <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="😕"
    /> soll &quot;aktuell&quot; immer das letzte sein?) auf sich selbst gesetzt, was überhaupt keinen Sinn macht, denn wie soll ein Element sein eigener Vorgänger sein? Oder soll oVor für Vorwärts stehen? Auch dann macht es keinen Sinn, der Nachfolger des letzten Elements soll ja das neue sein, nicht das alte letzte. Und was ist dann oNach? Nachwärts?</p>
<p>Ebenso wirr bei btn_vorClick:<br />
Der Nachwärtszeiger des aktuellen (ist das nun aktuell oder das letzte?) wird wieder auf sich selbst gesetzt, was überhaupt keinen Sinn macht. Und dann setzt du korrekt das aktuelle Element auf den Nachfolger (oVor) des alten aktuellen Elements. Diesen hast du aber bei der Erstellung auf sich selbst gesetzt, wodurch nichts passiert.</p>
<p>Meine Einschätzung: Du bist anscheinend auf dem Gebiet der manuellen Speicherverwaltung sehr, sehr unsicher. Such dir zunächst mal etwas einfacheres. Spiel einfach mal ein bisschen mit Pointern rum und versuch genau zu verstehen, wie das funktioniert. Den jetzigen Code deiner doppelt verketteten Liste kannst du wegwerfen, da ist zu vieles schon vom Konzept her falsch. Wenn du sicherer mit Pointern umgehen kannst, wirst du dies einsehen und kannst ein viel besseres Konzept für die Liste entwickeln.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1894611</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1894611</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 09 May 2010 11:44:22 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Doppelt verketteten Listen on Sun, 09 May 2010 11:58:48 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/4791">@Zeus</a> :</p>
<p>Der Code stammt zu 90 % von meinem Lehrer , ich habe nur versucht den code zu ein bisschen zu erweitern(btn_vor).<br />
Ich schreibe Prüfungen für den Assistenten für Informatik( es geht eig nur um die Fachhochschulreife).</p>
<blockquote>
<p>Allerdings scheinen da mehr fehler zu sein weil deine drei Pointer werden im Code gleichgesetzt:</p>
<p>C/C++ Code:<br />
Anfang=Aktuell=Neu ;</p>
</blockquote>
<p>naja die pointer werden ja nur gleich gesetzt wenn es noch kein erstes element gibt. Dann würde das ja auch stimmen. wenn es noch kein element gibt dann ist ja das Aktuelle gleich dem ersten und dem neuen!</p>
<p>Das einfügen eines Elementes funktioniert auch .</p>
<p>mfg</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/19375">@SeppJ</a></p>
<p>oNach ist der Nachfolger, oVor ist der Vorgänger und Aktuelle ist nicht das Letzte sondern der aktuelle zeiger.</p>
<p>Wie schon erwähnt stammt der code nur zum Teil von mir (btn_vor). Der Rest stammt von meinem Lehrer, welcher sich seiner sache jedoch ziehmlich sicher sein kann.</p>
<p>Ich weis das wir den Code von ca 3Monaten im Untericht hatten und das ich damals auch das vorblättern auf die Art hinbekommen habe. Das einfügen eines neuen Elements (btn_neu) funktioniert auf jeden fall (kann ich ja beim Debuggen sehen).</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1894614</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1894614</guid><dc:creator><![CDATA[THPS]]></dc:creator><pubDate>Sun, 09 May 2010 11:58:48 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Doppelt verketteten Listen on Sun, 09 May 2010 12:40:52 GMT]]></title><description><![CDATA[<p>Oh korrekt, die Benammung ist halt total schrecklich. Da kann man schon durcheinandere kommen beim Fremdcode.</p>
<p>Und das dein Leherer sowas schreibt, hast du mein Beileid und Mitgefühl aus tiefsten Herzen.</p>
<p>Hast du mein Code probiert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1894628</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1894628</guid><dc:creator><![CDATA[Zeus]]></dc:creator><pubDate>Sun, 09 May 2010 12:40:52 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Doppelt verketteten Listen on Sun, 09 May 2010 15:13:27 GMT]]></title><description><![CDATA[<p>mmh noch nicht wirklich ich hab aber die funktionierende version von &quot;meinem&quot; Codestyl gefunden:</p>
<pre><code class="language-cpp">class TPerson
{
public:
  String Vorname, Nachname;
  TPerson *oVor;
  TPerson *oNach;
  TPerson(String s_Vorname, String s_Nachname);
};

TPerson::TPerson(String s_Vorname,String s_Nachname)
{
  Vorname = s_Vorname;
  Nachname = s_Nachname;
  oVor = NULL;
  oNach = NULL;
}

TPerson *Neu, *Anfang, *Aktuell;

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::btn_NewPersonClick(TObject *Sender)
{
  Neu = new TPerson(edt_Vorname-&gt;Text, edt_Nachname-&gt;Text);
  if(Anfang)
  {
    Aktuell-&gt;oNach = Neu;
    Neu-&gt;oVor = Aktuell;
    Aktuell = Neu;
  }
  else
  {
    Anfang = Aktuell = Neu;
  }
//    ShowMessage(Neu-&gt;Land);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &amp;Action)
{
  if(Anfang)
  {
    while(Anfang-&gt;oNach)
    {
      Anfang = Anfang-&gt;oNach;
      delete Anfang-&gt;oVor;
    }
    delete Anfang;
    Anfang = NULL;
  }
}
//---------------------------------------------------------------------------

void __fastcall TForm1::btn_BACKClick(TObject *Sender)
{
  if(Anfang &amp;&amp; Aktuell-&gt;oVor)
  {
    Aktuell = Aktuell-&gt;oVor;
    edt_Vorname-&gt;Text = Aktuell-&gt;Vorname;
    edt_Nachname-&gt;Text = Aktuell-&gt;Nachname;
  }
}
//---------------------------------------------------------------------------

void __fastcall TForm1::btn_FORWARDClick(TObject *Sender)
{
  if(Anfang &amp;&amp; Aktuell-&gt;oNach)
  {
    Aktuell = Aktuell-&gt;oNach;
    edt_Vorname-&gt;Text = Aktuell-&gt;Vorname;
    edt_Nachname-&gt;Text = Aktuell-&gt;Nachname;
  }
}
</code></pre>
<p>Ob das ein schlechter Programmierstil ist oder nicht kann ich nicht einschätzen, da ich es so gelernt habe.<br />
Ich hatte jedoch den Eindruck das mein Lehrer immer versucht hat uns auf einen ordentlichen Programmierstyl zu trimmen. Ob er nun diese Variante gewählt hat um uns dieses thema etwas simpler bei zubringen weis ich nicht</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1894708</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1894708</guid><dc:creator><![CDATA[THPS]]></dc:creator><pubDate>Sun, 09 May 2010 15:13:27 GMT</pubDate></item></channel></rss>