<?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>Gibts da schon Klassen, die man benutzen kann oder muss man sich alles selbst schreiben ?</p>
<p>Kann man TList dafür benutzen ?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/107277/verkettete-liste</link><generator>RSS for Node</generator><lastBuildDate>Fri, 17 Jul 2026 10:35:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/107277.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 18 Apr 2005 09:57:21 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Verkettete Liste on Mon, 18 Apr 2005 09:57:21 GMT]]></title><description><![CDATA[<p>Gibts da schon Klassen, die man benutzen kann oder muss man sich alles selbst schreiben ?</p>
<p>Kann man TList dafür benutzen ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/769310</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/769310</guid><dc:creator><![CDATA[cHillb3rT]]></dc:creator><pubDate>Mon, 18 Apr 2005 09:57:21 GMT</pubDate></item><item><title><![CDATA[Reply to Verkettete Liste on Mon, 18 Apr 2005 10:05:22 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>du kannst TList nehmen.<br />
Allerdings hast du dann nur void * Elemente, was sehr unpraktisch ist.<br />
Nimm lieber std::list, dort kannst du einen speziellen Elementtyp angeben (und das hat auch wesentlich mehr Funktionen und ist C++ Standard).</p>
<p><a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-107265.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-107265.html</a><br />
der Verweis auf BCB-Klassen war zwar nett gemeint, aber in diesem Fall ungünstig.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/769311</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/769311</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Mon, 18 Apr 2005 10:05:22 GMT</pubDate></item><item><title><![CDATA[Reply to Verkettete Liste on Mon, 18 Apr 2005 10:04:56 GMT]]></title><description><![CDATA[<p>eben hab ich auch noch gesehen, dass ich auch ruhig TStringList nehmen kann.........</p>
<p>Wäre auch noch eine ordentliche Lösung</p>
]]></description><link>https://www.c-plusplus.net/forum/post/769313</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/769313</guid><dc:creator><![CDATA[cHillb3rT]]></dc:creator><pubDate>Mon, 18 Apr 2005 10:04:56 GMT</pubDate></item><item><title><![CDATA[Reply to Verkettete Liste on Mon, 18 Apr 2005 10:07:21 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>TStringList ist zwar eine praktische Klasse, kann aber nicht unbedingt als verkette Liste bezeichnet werden. Wenn das also nicht Bedingung ist, kannst du TStringList nehmen.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/769317</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/769317</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Mon, 18 Apr 2005 10:07:21 GMT</pubDate></item><item><title><![CDATA[Reply to Verkettete Liste on Mon, 18 Apr 2005 14:29:37 GMT]]></title><description><![CDATA[<p>TStringList wie auch TList kapseln intern normale Arrays, sind also <strong>keine</strong> verketteten Listen (std::list ist eine).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/769364</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/769364</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Mon, 18 Apr 2005 14:29:37 GMT</pubDate></item><item><title><![CDATA[Reply to Verkettete Liste on Mon, 18 Apr 2005 14:27:55 GMT]]></title><description><![CDATA[<p>hmmmm....... also kann man gar nicht einfach einen Zeiger auf die nächste Stringliste machen, wie bei der verketteten Liste oder kann man StringList und das Prinzip der verkettete Liste irgendwe kombinieren ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/769505</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/769505</guid><dc:creator><![CDATA[cHillb3rT]]></dc:creator><pubDate>Mon, 18 Apr 2005 14:27:55 GMT</pubDate></item><item><title><![CDATA[Reply to Verkettete Liste on Mon, 18 Apr 2005 14:31:30 GMT]]></title><description><![CDATA[<p>Verrate uns doch einfach mal was du machen willst. Vielleicht kann dir dann jemand eine geeignete Klasse empfehlen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/769511</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/769511</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Mon, 18 Apr 2005 14:31:30 GMT</pubDate></item><item><title><![CDATA[Reply to Verkettete Liste on Mon, 18 Apr 2005 14:45:47 GMT]]></title><description><![CDATA[<p>also.... <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>Ich möchte aus einer Datei Zeile für Zeile auslesen. Jede Zeile enthält die Daten für eine Person. Damit muss also nach jeder Zeile eine neue Instanz der Klasse Person angelegt werden. Nun muss ich aber die ganzen Daten auch während der Programmlaufzeit verfügbar halten und damit irgendwo speichern. Dies kann ich wunderbar eigentlich in einer verketteten Liste machen.</p>
<p>Programmfunktionen:<br />
- Datei auslesen<br />
- Zeile für Zeile auslesen<br />
- Personeninstanzen anlegen<br />
- Wenn Datei richtig eingelesen ist, dann wahlweise Sortierung nach Vornamen, Nachnamen oder Alter ermöglichen<br />
- Sortierte Liste ausgeben</p>
<p>PS: Die Speicherung soll dynamisch verlaufen und es soll keine bestimmten Speichergrenzen haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/769523</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/769523</guid><dc:creator><![CDATA[cHillb3rT]]></dc:creator><pubDate>Mon, 18 Apr 2005 14:45:47 GMT</pubDate></item><item><title><![CDATA[Reply to Verkettete Liste on Mon, 18 Apr 2005 14:57:45 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>dafür kansst du sowohl Arrays (vector) als auch Listen (list) nehmen, eventuell sogar map.<br />
Wenn du wahlfreien Zugriff auf die Datensätze haben willst, nimm vector.<br />
Wenn du viel durch die Datesätze iterieren und viel innerhalb bestehender Datensätze einfügen willst, nimm list.<br />
Wenn du gleich einen Index über z.B. den Namen der Personen haben willst, nimm map.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/769535</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/769535</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Mon, 18 Apr 2005 14:57:45 GMT</pubDate></item><item><title><![CDATA[Reply to Verkettete Liste on Mon, 18 Apr 2005 14:57:40 GMT]]></title><description><![CDATA[<p>Für kleiner Datenmengen ist TStringList hier sicherlich ausreichend. Bei sehr großen Datenmengen dann evtl std::list<a href="std::string" rel="nofollow">std::string</a>. Wobei man hier überlegen sollte ob es wirklich notwendig ist alle Daten immer im Speicher zu halten.<br />
Dann bietet sich evtl. auch eine Datenbank an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/769538</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/769538</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Mon, 18 Apr 2005 14:57:40 GMT</pubDate></item><item><title><![CDATA[Reply to Verkettete Liste on Mon, 18 Apr 2005 15:17:42 GMT]]></title><description><![CDATA[<p>Dann hab ich mal eine Frage... <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>Ich hab dann meine Klasse &quot;Person&quot; und in der Klasse werden dann immer wieder Instanzen gemacht für jede neue Person, die ich auslese und dann müsste ich doch innerhalb der Klasse dann immer wieder neue Stringlisten machen oder kann ich alles in eine einzige reinschreiben ?</p>
<p>und wie sieht das dann so BTW aus ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/769557</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/769557</guid><dc:creator><![CDATA[cHillb3rT]]></dc:creator><pubDate>Mon, 18 Apr 2005 15:17:42 GMT</pubDate></item><item><title><![CDATA[Reply to Verkettete Liste on Mon, 18 Apr 2005 15:26:55 GMT]]></title><description><![CDATA[<p>Du solltest wohl besser eine Liste auf deine Klasse &quot;Person&quot; machen und die dann verwalten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/769569</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/769569</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Mon, 18 Apr 2005 15:26:55 GMT</pubDate></item><item><title><![CDATA[Reply to Verkettete Liste on Tue, 19 Apr 2005 07:26:53 GMT]]></title><description><![CDATA[<p>aha.... wie würde das denn dann aussehen ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/770039</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/770039</guid><dc:creator><![CDATA[cHillb3rT]]></dc:creator><pubDate>Tue, 19 Apr 2005 07:26:53 GMT</pubDate></item><item><title><![CDATA[Reply to Verkettete Liste on Tue, 19 Apr 2005 07:28:42 GMT]]></title><description><![CDATA[<p>Zeig doch mal die Deklaration deiner Klasse.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/770041</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/770041</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Tue, 19 Apr 2005 07:28:42 GMT</pubDate></item><item><title><![CDATA[Reply to Verkettete Liste on Tue, 19 Apr 2005 08:04:08 GMT]]></title><description><![CDATA[<p>Ich hab noch nicht so genau eine Ahnung, wie ich das bauen werde...</p>
<p>Ich weiß nur, dass ich wegen der dynamischen Speicherung Wert auf den Copy-Ctor legen muss.</p>
<p>Ich hab ja erst angefangen mit C++ und arbeite mich erst hier rein. Der Chef fängt halt immer gleich mit guten Aufgaben an *g*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/770072</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/770072</guid><dc:creator><![CDATA[cHillb3rT]]></dc:creator><pubDate>Tue, 19 Apr 2005 08:04:08 GMT</pubDate></item><item><title><![CDATA[Reply to Verkettete Liste on Tue, 19 Apr 2005 08:12:17 GMT]]></title><description><![CDATA[<p>Wenn du Containerklassen verwendest benötigt deine Klasse default Konstruktor, Copy-Konstruktor und Zuweisungsoperator. Wenn du aber in deiner Klasse aber keinen Speicher allozieren musst, reichen in der Regel auch die defaultmässig erzeugten Funktionen. Deswegen sagte ich ja, du sollst mir mal deine Deklaration zeigen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/770078</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/770078</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Tue, 19 Apr 2005 08:12:17 GMT</pubDate></item><item><title><![CDATA[Reply to Verkettete Liste on Tue, 19 Apr 2005 08:25:11 GMT]]></title><description><![CDATA[<p>Also die Klasse Liste hatte ich mir so gedacht:</p>
<pre><code class="language-cpp">class Liste
{
  private:
  ListElement *erstes;
  ListElement *letztes;
  int anzahl;
  Liste();
  ertes(0), letztes(0), anzahl(0){}
  virtual ~Liste();
  bool empty() const
  {return (anzahl==0);}
  int size() const
  {return anzahl;}
  void push_back(const string&amp; schluessel, const string&amp; wert);
  void pop_front();
  ListElement* front()
  {return erstes;}
};
</code></pre>
<p>Für Anregungen und Kritik bin ich immer offen..... <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="😉"
    /><br />
Ich will ja auch was lernen *g*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/770085</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/770085</guid><dc:creator><![CDATA[cHillb3rT]]></dc:creator><pubDate>Tue, 19 Apr 2005 08:25:11 GMT</pubDate></item><item><title><![CDATA[Reply to Verkettete Liste on Tue, 19 Apr 2005 08:30:17 GMT]]></title><description><![CDATA[<p>Das hier ist doch deine Liste, die du ja evtl. durch eine Standardlösung ersetzen wolltest. Ich meinte eigentlich die Klasse, die du in deiner Liste speichern wolltest (&quot;Person&quot;).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/770091</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/770091</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Tue, 19 Apr 2005 08:30:17 GMT</pubDate></item><item><title><![CDATA[Reply to Verkettete Liste on Tue, 19 Apr 2005 08:36:21 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class TPerson
{
  private:
  char *vorname;
  char *nachname;
  int alter;

  TPerson *p = new TPerson; // müsste die Instanz der Person erzeugen
  public:
  ... // hier müssten ja dann Funktionen und andere Bedingungen noch hin
};
</code></pre>
<p>So stell ich mir die Klasse vor, aber ich hab noch keinen Ansatz für eine Klasse, die ich zum Speichern verwende ! <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/770098</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/770098</guid><dc:creator><![CDATA[cHillb3rT]]></dc:creator><pubDate>Tue, 19 Apr 2005 08:36:21 GMT</pubDate></item><item><title><![CDATA[Reply to Verkettete Liste on Tue, 19 Apr 2005 08:40:06 GMT]]></title><description><![CDATA[<p>Ersetze einfach deine char* durch std::string oder AnsiString und schon brauchst du keinen eigenen Copy-Konstruktor etc. mehr.<br />
Wenn du diese Klasse so wie sie ist verwenden willst, musst du zwingend Konstruktor, Destruktor, Copy-Konstruktor und Zuweisungsoperator erzeugen.<br />
Tu dir einen Gefallen und schmeiss rohe Pointer raus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/770105</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/770105</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Tue, 19 Apr 2005 08:40:06 GMT</pubDate></item><item><title><![CDATA[Reply to Verkettete Liste on Tue, 19 Apr 2005 09:14:18 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class TPerson 
{ 
  private: 
  std::string vorname; 
  std::string nachname; 
  int alter; 

  public:
  TPerson();
  TPerson(std::string vorname, std::string nachname, int alter);
  ~TPerson();
  TPerson(const TPerson &amp;Person); 
};
</code></pre>
<p>soooo.... wie sieht es denn jetzt aus ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/770111</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/770111</guid><dc:creator><![CDATA[cHillb3rT]]></dc:creator><pubDate>Tue, 19 Apr 2005 09:14:18 GMT</pubDate></item><item><title><![CDATA[Reply to Verkettete Liste on Tue, 19 Apr 2005 09:35:07 GMT]]></title><description><![CDATA[<p>Wie gesagt, hier kannst du Default-Destruktor und -Konstruktor sowie Copy-Konstruktor weglassen, da für alle Typen in deiner Klasse diese schon existieren und somit automatisch aufgerufen werden.<br />
Bei deinem 2. Konstruktor würde ich eine Initialisierungsliste verwenden. Dann sparst du dir die Implemtierung.<br />
Ansonsten kannst du diese Klasse problemlos in einer Liste verwenden.</p>
<pre><code class="language-cpp">std::list&lt;Person&gt; myList;
</code></pre>
<p>Wenn deine Daten aus der Datei über streams gelesen und geschrieben werden, könnte man noch die stream-operatoren &lt;&lt; und &gt;&gt; dafür überladen um das Ganze etwas zu vereinfachen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/770156</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/770156</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Tue, 19 Apr 2005 09:35:07 GMT</pubDate></item><item><title><![CDATA[Reply to Verkettete Liste on Tue, 19 Apr 2005 09:53:23 GMT]]></title><description><![CDATA[<p>Mit der Initialisierungsliste könnte ich es dann so machen:</p>
<pre><code class="language-cpp">TPerson::TPerson() : vorname(&quot;testvorname&quot;) 
{ 
}
</code></pre>
<p>oder so:</p>
<pre><code class="language-cpp">TPerson::TPerson() : nachname(&quot;testnachname&quot;) 
{ 
}
</code></pre>
<p>oder kann ich gleich alle zusammen initialisieren oder muss ich jeden Wert, den die Person hat, initialisieren ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/770165</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/770165</guid><dc:creator><![CDATA[cHillb3rT]]></dc:creator><pubDate>Tue, 19 Apr 2005 09:53:23 GMT</pubDate></item><item><title><![CDATA[Reply to Verkettete Liste on Tue, 19 Apr 2005 10:35:09 GMT]]></title><description><![CDATA[<p>Ich dachte eher ans sowas</p>
<pre><code class="language-cpp">TPerson(std::string vorname_, std::string nachname_, int alter_) : 
              vorname(vorname_), nachname(namchname_), alter(alter_) {}
</code></pre>
<p>Es ist immer besser, wenn die Parameter im Konstruktor andere Bezeichnungen haben als die Membervariablen. Das vermeidet Verwirrung.<br />
Den default-Konstruktor kannst genauso mit einer Initialisierungsliste versehen, ich frag mich bloß warum.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/770198</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/770198</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Tue, 19 Apr 2005 10:35:09 GMT</pubDate></item><item><title><![CDATA[Reply to Verkettete Liste on Tue, 19 Apr 2005 22:03:15 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class TPerson
{
  private:
  std::string vorname;
  std::string nachname;
  int alter;

  public:
  TPerson();
  TPerson(std::string vorname_, std::string nachname_, int alter_) :
              vorname(vorname_), nachname(namchname_), alter(alter_) {}
  ~TPerson();
};
</code></pre>
<p>Also sehe es bisher dann mal so aus.....</p>
<p>Diese Klasse bau ich dann in die Person.h ein, damit ich während der gesamten Laufzeit des Programmes Zugriff darauf habe.</p>
<p>Aber eine andere Frage, die ich mir noch stelle ist: Wie kann ich nun jede Instanz der Klasse abspeichern und später sortiert wieder ausgeben.</p>
<p>Wie kann man das genau machen ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/770774</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/770774</guid><dc:creator><![CDATA[cHillb3rT]]></dc:creator><pubDate>Tue, 19 Apr 2005 22:03:15 GMT</pubDate></item><item><title><![CDATA[Reply to Verkettete Liste on Wed, 20 Apr 2005 08:05:46 GMT]]></title><description><![CDATA[<p>Eröffne dafür mal bitte einen neuen Thread. Hier im Forum gilt die Regel &quot;Neues Thema - neuer Thread&quot;. Ich helfe dir dann gerne weiter.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/770923</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/770923</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Wed, 20 Apr 2005 08:05:46 GMT</pubDate></item></channel></rss>