<?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[Doppelt verkettete Liste]]></title><description><![CDATA[<p>Nabend <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="😉"
    /> Ich übe gerad den Gebrauch einer doppelt verketteten Liste und brauche Hilfe^^</p>
<p>Ich gebe über die Konsole beliebige Integer ein, welche dann in die Liste geschrieben werden, allerdings möchte ich, dass die selbe Zahl nicht 2x vorkommen darf:</p>
<p>also bei 1, 1, 3, 5, 8, ... sollte er nur 1, 3, 5, 8 reinschreiben, meine Idee wäre halt, dass ich eine if-Abfrage mache...ich find die Idee auch ziemlich super( <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> ) nur habe ich das Problem, dass ich den eingegebenen Wert nicht mit den Werten aus der Liste vergleichen kann, bzw. nicht weiß wie.</p>
<p>Kann mir jemand sagen, wie ich einzelne Elemente in meiner Liste vergleiche?</p>
<p>Gruß Zel <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>
]]></description><link>https://www.c-plusplus.net/forum/topic/305094/doppelt-verkettete-liste</link><generator>RSS for Node</generator><lastBuildDate>Sat, 27 Jun 2026 05:13:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/305094.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 20 Jun 2012 17:55:08 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Doppelt verkettete Liste on Wed, 20 Jun 2012 17:55:08 GMT]]></title><description><![CDATA[<p>Nabend <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="😉"
    /> Ich übe gerad den Gebrauch einer doppelt verketteten Liste und brauche Hilfe^^</p>
<p>Ich gebe über die Konsole beliebige Integer ein, welche dann in die Liste geschrieben werden, allerdings möchte ich, dass die selbe Zahl nicht 2x vorkommen darf:</p>
<p>also bei 1, 1, 3, 5, 8, ... sollte er nur 1, 3, 5, 8 reinschreiben, meine Idee wäre halt, dass ich eine if-Abfrage mache...ich find die Idee auch ziemlich super( <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> ) nur habe ich das Problem, dass ich den eingegebenen Wert nicht mit den Werten aus der Liste vergleichen kann, bzw. nicht weiß wie.</p>
<p>Kann mir jemand sagen, wie ich einzelne Elemente in meiner Liste vergleiche?</p>
<p>Gruß Zel <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2225501</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2225501</guid><dc:creator><![CDATA[Zel2491]]></dc:creator><pubDate>Wed, 20 Jun 2012 17:55:08 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelt verkettete Liste on Wed, 20 Jun 2012 18:20:01 GMT]]></title><description><![CDATA[<p>Naja, du fängst beim ersten Listenelement an, und gehst dann komplett durch, und vergleichst jedes einzelne element. Alternativ kannst du auch einfach set verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2225514</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2225514</guid><dc:creator><![CDATA[KMT]]></dc:creator><pubDate>Wed, 20 Jun 2012 18:20:01 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelt verkettete Liste on Wed, 20 Jun 2012 18:35:52 GMT]]></title><description><![CDATA[<p>Okay, vielleicht war ich etwas zu allgemein^^</p>
<p>Bei einem Array oder einem Vektor habe ich ja</p>
<pre><code class="language-cpp">myVector.at(i); // oder
myVector[i];
</code></pre>
<p>sowas habe ich ja bei einer doppelt verketteten Liste nicht^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2225520</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2225520</guid><dc:creator><![CDATA[Zel2491]]></dc:creator><pubDate>Wed, 20 Jun 2012 18:35:52 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelt verkettete Liste on Wed, 20 Jun 2012 18:55:37 GMT]]></title><description><![CDATA[<p>Du koenntest das in etwa so machen:</p>
<pre><code class="language-cpp">// Ueberprueft, ob 'x' in der Liste 'l' ist
bool has( const std::list&lt;int&gt;&amp; l, int x )
{
	for ( std::list&lt;int&gt;::const_iterator it = l.begin(); it != l.end(); ++it ) // Itereiere ueber alle Elemente der Liste mit einen Iterator
		if ( *it == x )
			return true;
	return false;
}

int main()
{
	std::list&lt;int&gt; l;

	while ( true )
	{
		int input;
		cout &lt;&lt; &quot;Bitte geben sie eine Zahl ein: &quot;;
		cin &gt;&gt; input;
		if ( !has( l, input ) ) // Falls 'input' noch nicht in 'l', fuege 'input' ein
		{
			cout &lt;&lt; input &lt;&lt; &quot; inserted&quot; &lt;&lt; endl;
			l.push_back(input);
		}
	}
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2225524</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2225524</guid><dc:creator><![CDATA[icarus2]]></dc:creator><pubDate>Wed, 20 Jun 2012 18:55:37 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelt verkettete Liste on Wed, 20 Jun 2012 19:00:54 GMT]]></title><description><![CDATA[<p>Doch.</p>
<pre><code class="language-cpp">std::list&lt;int&gt; mylist(10,20);

mylist.begin();
mylist.end();            //dies sind die Memberfunktionen von list
mylist.rend();
mylist.rbegin();
</code></pre>
<p>gruß<br />
syntax</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2225529</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2225529</guid><dc:creator><![CDATA[Syntax_error]]></dc:creator><pubDate>Wed, 20 Jun 2012 19:00:54 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelt verkettete Liste on Wed, 20 Jun 2012 19:14:08 GMT]]></title><description><![CDATA[<p>icarus2 schrieb:</p>
<blockquote>
<p>Du koenntest das in etwa so machen:</p>
<pre><code class="language-cpp">// Ueberprueft, ob 'x' in der Liste 'l' ist
bool has( const std::list&lt;int&gt;&amp; l, int x )
{
	for ( std::list&lt;int&gt;::const_iterator it = l.begin(); it != l.end(); ++it ) // Itereiere ueber alle Elemente der Liste mit einen Iterator
		if ( *it == x )
			return true;
	return false;
}
</code></pre>
</blockquote>
<p>Hä? Kennst du nicht die STL-Algorithmen oder was?<br />
Um sicherzustellen, dass eine Liste von jedem Element nur eines besitzt, gibt es verschiedene Wege, der ist am einfachsten:</p>
<pre><code class="language-cpp">list.sort();
list.unique();
</code></pre>
<p>Sonst einfach einen assoziativen Container (speziell map, set) verwenden, wenn das für dich nach jedem Einfügen sichergestellt werden soll.<br />
Übrigens kannst du auch bei einer Liste schreiben:</p>
<pre><code class="language-cpp">*std::advance(list.begin(), 4) = 8; // 5.Element auf 8 setzen
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2225534</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2225534</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Wed, 20 Jun 2012 19:14:08 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelt verkettete Liste on Wed, 20 Jun 2012 19:24:27 GMT]]></title><description><![CDATA[<p>Hacker schrieb:</p>
<blockquote>
<p>Hä? Kennst du nicht die STL-Algorithmen oder was?</p>
</blockquote>
<p>Doch, die meisten kenne ich. Aber da er gerade lernt mit Listen zu hantieren kann er das ruhig mal selber implementieren.</p>
<p>Hacker schrieb:</p>
<blockquote>
<p>Um sicherzustellen, dass eine Liste von jedem Element nur eines besitzt, gibt es verschiedene Wege, der ist am einfachsten:</p>
<pre><code class="language-cpp">list.sort();
list.unique();
</code></pre>
</blockquote>
<p>Ja, so kann man das natuerlich machen.</p>
<p>Hacker schrieb:</p>
<blockquote>
<p>Sonst einfach einen assoziativen Container (speziell map, set) verwenden, wenn das für dich nach jedem Einfügen sichergestellt werden soll.</p>
</blockquote>
<p>Lies mal seinen ersten Satz.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2225540</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2225540</guid><dc:creator><![CDATA[icarus2]]></dc:creator><pubDate>Wed, 20 Jun 2012 19:24:27 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelt verkettete Liste on Wed, 20 Jun 2012 19:28:37 GMT]]></title><description><![CDATA[<p>icarus2 schrieb:</p>
<blockquote>
<p>Hacker schrieb:</p>
<blockquote>
<p>Hä? Kennst du nicht die STL-Algorithmen oder was?</p>
</blockquote>
<p>Doch, die meisten kenne ich. Aber da er gerade lernt mit Listen zu hantieren kann er das ruhig mal selber implementieren.</p>
</blockquote>
<p>Das hat doch nichts mit verketteten Listen zu tun, das ist ein sehr allgemeiner Algorithmus. Außerdem beschränkst du dich hier auch <code>std::list</code> und seine Methoden. Aber eig. hast du Recht, selber implementieren zu Lernzwecken ist natürlich immer gut. :schland:</p>
<p>icarus2 schrieb:</p>
<blockquote>
<p>Hacker schrieb:</p>
<blockquote>
<p>Sonst einfach einen assoziativen Container (speziell map, set) verwenden, wenn das für dich nach jedem Einfügen sichergestellt werden soll.</p>
</blockquote>
<p>Lies mal seinen ersten Satz.</p>
</blockquote>
<p>Ich habs aber schöner gesagt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2225542</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2225542</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Wed, 20 Jun 2012 19:28:37 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelt verkettete Liste on Wed, 20 Jun 2012 20:17:27 GMT]]></title><description><![CDATA[<p>Okay,</p>
<p>meine doppelt verkettete Liste sieht wiefolgt aus (darum keine Memberfunktionen vorhanden):</p>
<pre><code class="language-cpp">// in main

DLink *myList = new DLink(-1);

	myList-&gt;input(myList);

// Konstruktor von DLink

DLink::DLink(int iAContent) : iContent(iAContent), pre(NULL), suc(NULL) {

}
</code></pre>
<p>darum wie gesagt keine Memberfunktionen.</p>
<p>bin jetzt auf diesem Stand:</p>
<pre><code class="language-cpp">// meine input() Funtkion sieht so aus:
void DLink::input(DLink* myList) {

	int iNumber = 1;
	cout &lt;&lt; &quot;Please add as many integer as you wish: &quot; &lt;&lt; endl;

	while(iNumber != 0) {

		cin &gt;&gt; iNumber;

		if(!has(myList, iNumber)) {

			myList-&gt;insert(new DLink(iNumber));

		} else {

			cout &lt;&lt; &quot;Integer already exists!&quot; &lt;&lt; endl;
		}

	}

}

// und meine has-Funktion sieht so aus:

bool DLink::has(const DLink* myList, int iValue) {

	for(int i = 0; i != myList-&gt;getLength(); i++) {
		if (i == iValue) {
			return true;
		}
		return false;

	}

}
</code></pre>
<p>Problem ist: wie genau bestimmte ich jetzt die Länge meiner Liste?</p>
<p>Weiß halt nicht, was meine getLength()-Funktion returnen soll...^^</p>
<p>Aber schonmal vielen Dank für die Antworten</p>
<p>Edit:</p>
<p>neue Membervariable iLength, welche nach jedem erfolgreichen Aufruf der instert-Funktion um 1 erhöht wird.</p>
<p>Müsste ja funktionieren oder?^^</p>
<p>Nur klappt das immer noch nicht so richtig, wenn ich 1, 1, 1, 1, 3, 5 eingebe gibt er mir alle Zahlen aus, auch alle eingegebenen 1en...^^</p>
<p>d.h. irgendwas in der has-Funktion ist falsch, weiß jemand was?^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2225556</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2225556</guid><dc:creator><![CDATA[Zel2491]]></dc:creator><pubDate>Wed, 20 Jun 2012 20:17:27 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelt verkettete Liste on Wed, 20 Jun 2012 20:18:00 GMT]]></title><description><![CDATA[<p>Sie kann natürlich nur wissen, wie lang sie ist, wenn du auch schön brav mitzählst, wie viele &quot;push-backs&quot; du gemacht hast.</p>
<pre><code class="language-cpp">struct List{

private:
//
int size;

public:
//
inline int get_size() const {return size;}
inline void increment_size() { size++}
};
</code></pre>
<p>Jetzt klarer? <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>gruß<br />
syntax</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2225560</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2225560</guid><dc:creator><![CDATA[Syntax_error]]></dc:creator><pubDate>Wed, 20 Jun 2012 20:18:00 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelt verkettete Liste on Wed, 20 Jun 2012 20:24:02 GMT]]></title><description><![CDATA[<p><code>inline</code> kannst du (wie du wissen solltest :tadel:) weglassen.</p>
<p>Syntax_error schrieb:</p>
<blockquote>
<p>inline void increment_size() { size++}</p>
</blockquote>
<p>Ach komm, das ist jetzt ein wenig überflüssig <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> , auch wenn es natürlich geinlined wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2225563</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2225563</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Wed, 20 Jun 2012 20:24:02 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelt verkettete Liste on Wed, 20 Jun 2012 20:52:41 GMT]]></title><description><![CDATA[<p>Hacker schrieb:</p>
<blockquote>
<p><code>inline</code> kannst du (wie du wissen solltest :tadel:) weglassen.</p>
</blockquote>
<p>Klar weiß ich das, aber was spricht gegen so eine schreibweise?</p>
<p>gruß<br />
syntax</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2225572</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2225572</guid><dc:creator><![CDATA[Syntax_error]]></dc:creator><pubDate>Wed, 20 Jun 2012 20:52:41 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelt verkettete Liste on Wed, 20 Jun 2012 23:31:25 GMT]]></title><description><![CDATA[<p>EDIT:</p>
<p>Hatte hier schon einen Roman geschrieben...^^ Derzeit siehts so eigentlich ganz gut aus...</p>
<p>Allerdings gibt er nur eine Fehlermeldung aus, wenn ich den Wert eingebe, mit dem ich die Liste initialisiert habe (hier 1), wenn ich 2, 2, 2 eingebe, gibt er keine Fehlermeldung aus und addet sie trotzdem...</p>
<p>Jemand eine Idee?</p>
<pre><code class="language-cpp">// In Main

int iNumber = 0;
	DLink *myList = new DLink(1);

	cout &lt;&lt; &quot;Please add as many integer as you wish: &quot; &lt;&lt; endl;

	do {

		cin &gt;&gt; iNumber;
		myList-&gt;input(myList, iNumber);

		} while(iNumber != 0);

// in der Funktion Input

if(!has(myList, iNumber)) {

			myList-&gt;insert(new DLink(iNumber));

		} else {

			cout &lt;&lt; &quot;Integer was not added since it's already in the list!&quot; &lt;&lt; endl;
		}

// in der Funktion has

DLink* linkElement = myList;

	while(linkElement != NULL) {

		if (linkElement-&gt;getContent() == iValue) {
			return true;
			linkElement = linkElement-&gt;suc;
		}
		return false;

	}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2225583</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2225583</guid><dc:creator><![CDATA[Zel2491]]></dc:creator><pubDate>Wed, 20 Jun 2012 23:31:25 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelt verkettete Liste on Thu, 21 Jun 2012 06:14:00 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">DLink* linkElement = myList;

while(linkElement != NULL) {

    if (linkElement-&gt;getContent() == iValue) {
        return true;
        linkElement = linkElement-&gt;suc;
    }
    //wenn du hier schon retarn false schreibst, wird es schon immer beim allerersten schleifendurchgang aufgerufen, es wird also immer nur das erste element geprüft.
} 
return false;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2225617</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2225617</guid><dc:creator><![CDATA[KMT]]></dc:creator><pubDate>Thu, 21 Jun 2012 06:14:00 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelt verkettete Liste on Thu, 21 Jun 2012 06:15:46 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">return true;
linkElement = linkElement-&gt;suc;
</code></pre>
<p>Sowas ist natürlich auch Blödsinn, das weitergehen in linkElement wird nie ausgeführt - warum steht es überhaupt da drin...?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2225619</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2225619</guid><dc:creator><![CDATA[KMT]]></dc:creator><pubDate>Thu, 21 Jun 2012 06:15:46 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelt verkettete Liste on Thu, 21 Jun 2012 09:31:20 GMT]]></title><description><![CDATA[<p>Ich schätze mal es stand im if-Block und nicht in der While-Schleife, weil spät und ich doof gestern Nacht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Nee, jetzt wo du das sagst seh ich das auch sofort...-.-''</p>
<p>Danke für den Hinweis^^ <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>Edit:</p>
<pre><code class="language-cpp">bool DLink::has(DLink* myList, int iValue) {

	DLink* linkElement = myList;

	while(linkElement != NULL) {

		if (linkElement-&gt;getContent() == iValue) {
			return true;

		}
		linkElement = linkElement-&gt;suc;

	}
	return false;
}
</code></pre>
<p>und es funktioniert direkt^^</p>
<p>Manchmal braucht man eben 4 Augen um so dumme Fehler zu finden <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>Thread kann closed undso^^ <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/2225698</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2225698</guid><dc:creator><![CDATA[Zel2491]]></dc:creator><pubDate>Thu, 21 Jun 2012 09:31:20 GMT</pubDate></item></channel></rss>