<?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[Lineare geordnete verkettete Liste]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich hab folgendes Problem, ich will mehrere durch einen Nomenklaturschlüssel unterscheidbare Einträge ordnen und dies mit einer linearen geordneten verketteten Liste realisieren, um damit dann weiter zu arbeiten.<br />
Dazu habe ich die folgende Funktion zur Erstellung und Belegung der Liste geschrieben:</p>
<pre><code class="language-cpp">void VerketteteLineareListe::suchEinfuegElement(ZBibInhEl &amp;listKopf, ZBibInhEl einfueEl){

	if(listKopf==NULL)                         //Liste ist leer, Anfang mit einfueEl belegen
		listKopf=einfueEl;
	else
		if(vergleichKennzahl(einfueEl, listKopf)){     //einfueEl amAnfang einfügen
			einfueEl-&gt;weiter=listKopf;
			listKopf=einfueEl;
		}
		else{                   //Liste durchsuchen, bis richtiger Platz für einfueEl gefunden
			ZBibInhEl p1, p2;   //Hilfs-/Laufzeiger bzw. Kamm für Suche;p2 läuft p1 um 1Element hinterher
			p1=listKopf;
			do{
				p2=p1;
				p1=p1-&gt;weiter;
			}while(p1!=NULL &amp;&amp; !vergleichKennzahl(einfueEl,p1));
			p2-&gt;weiter=einfueEl;
			einfueEl-&gt;weiter=p1;
		}
}
</code></pre>
<p>Die Funktion vergleichKennzahl sieht wie folgt aus:</p>
<pre><code class="language-cpp">bool VerketteteLineareListe::vergleichKennzahl(ZBibInhEl einfuegendeBiInEl, ZBibInhEl bezugBiInEl){

	const int arrayLaengeKennza=7;
	bool elKleinerBezug=false;

	for(int i=0;i&lt;=arrayLaengeKennza-1;i++){

	    int einfueEl=einfuegendeBiInEl-&gt;kennza[i]; //Kennzahl des einzufügenden BiInhEl
	    int bezugEl=bezugBiInEl-&gt;kennza[i];        //Kennzahl des bezugs BiInhEl

		if(einfueEl&lt;bezugEl){
			elKleinerBezug=true;
			i=arrayLaengeKennza-1;
		}
		if(einfueEl&gt;bezugEl){
			elKleinerBezug=false;
			i=arrayLaengeKennza-1;
		}

	}
	return elKleinerBezug;
}
</code></pre>
<p>Meine Liste wird auch soweit, wie ich es möchte erstellt, nur bei den Einträgen<br />
1.2.0.0.0.0, 1.3.0.0.0.0, 1.4.0.0.0.0 usw. werden diese nicht richtig einsortiert. Diese werden nach 1.1.0.0.0.0 in umgekehrter Reihenfolge und vor 1.1.1.0.0.0 eingefügt. Hat jemand eine Idee woran es liegen kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/169228/lineare-geordnete-verkettete-liste</link><generator>RSS for Node</generator><lastBuildDate>Wed, 16 Sep 2026 16:29:42 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/169228.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 03 Jan 2007 11:51:24 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Lineare geordnete verkettete Liste on Wed, 03 Jan 2007 11:51:24 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich hab folgendes Problem, ich will mehrere durch einen Nomenklaturschlüssel unterscheidbare Einträge ordnen und dies mit einer linearen geordneten verketteten Liste realisieren, um damit dann weiter zu arbeiten.<br />
Dazu habe ich die folgende Funktion zur Erstellung und Belegung der Liste geschrieben:</p>
<pre><code class="language-cpp">void VerketteteLineareListe::suchEinfuegElement(ZBibInhEl &amp;listKopf, ZBibInhEl einfueEl){

	if(listKopf==NULL)                         //Liste ist leer, Anfang mit einfueEl belegen
		listKopf=einfueEl;
	else
		if(vergleichKennzahl(einfueEl, listKopf)){     //einfueEl amAnfang einfügen
			einfueEl-&gt;weiter=listKopf;
			listKopf=einfueEl;
		}
		else{                   //Liste durchsuchen, bis richtiger Platz für einfueEl gefunden
			ZBibInhEl p1, p2;   //Hilfs-/Laufzeiger bzw. Kamm für Suche;p2 läuft p1 um 1Element hinterher
			p1=listKopf;
			do{
				p2=p1;
				p1=p1-&gt;weiter;
			}while(p1!=NULL &amp;&amp; !vergleichKennzahl(einfueEl,p1));
			p2-&gt;weiter=einfueEl;
			einfueEl-&gt;weiter=p1;
		}
}
</code></pre>
<p>Die Funktion vergleichKennzahl sieht wie folgt aus:</p>
<pre><code class="language-cpp">bool VerketteteLineareListe::vergleichKennzahl(ZBibInhEl einfuegendeBiInEl, ZBibInhEl bezugBiInEl){

	const int arrayLaengeKennza=7;
	bool elKleinerBezug=false;

	for(int i=0;i&lt;=arrayLaengeKennza-1;i++){

	    int einfueEl=einfuegendeBiInEl-&gt;kennza[i]; //Kennzahl des einzufügenden BiInhEl
	    int bezugEl=bezugBiInEl-&gt;kennza[i];        //Kennzahl des bezugs BiInhEl

		if(einfueEl&lt;bezugEl){
			elKleinerBezug=true;
			i=arrayLaengeKennza-1;
		}
		if(einfueEl&gt;bezugEl){
			elKleinerBezug=false;
			i=arrayLaengeKennza-1;
		}

	}
	return elKleinerBezug;
}
</code></pre>
<p>Meine Liste wird auch soweit, wie ich es möchte erstellt, nur bei den Einträgen<br />
1.2.0.0.0.0, 1.3.0.0.0.0, 1.4.0.0.0.0 usw. werden diese nicht richtig einsortiert. Diese werden nach 1.1.0.0.0.0 in umgekehrter Reihenfolge und vor 1.1.1.0.0.0 eingefügt. Hat jemand eine Idee woran es liegen kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1201780</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1201780</guid><dc:creator><![CDATA[eisherz]]></dc:creator><pubDate>Wed, 03 Jan 2007 11:51:24 GMT</pubDate></item><item><title><![CDATA[Reply to Lineare geordnete verkettete Liste on Wed, 03 Jan 2007 12:05:09 GMT]]></title><description><![CDATA[<p>Das <code>i=arrayLaengeKennza-1</code> sieht etwas gekünstelt aus (und bewirkt nebenbei noch einen zusätzlichen Schleifendurchlauf) - wenn du aus der Schleife raus willst, nimm lieber <code>break;</code> (in deinem Fall ginge auch ein return).</p>
<p>(außerdem wäre es eventuell hilfreich zu wissen, was sich hinter 'ZBibInhEl' etc verbirgt)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1201799</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1201799</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 03 Jan 2007 12:05:09 GMT</pubDate></item><item><title><![CDATA[Reply to Lineare geordnete verkettete Liste on Wed, 03 Jan 2007 12:36:26 GMT]]></title><description><![CDATA[<p>Danke für den Tipp mit dem Schleifenabruch, funktioniert.<br />
'ZBibInhEl' ist</p>
<pre><code class="language-cpp">typedef Bibelinhaltsverzeichniselement *ZBibInhEl;
</code></pre>
<p>Und das Bibelinhaltsverzeichniselement ist ein Objekt, das verschiedene Einträge enthält, wie z.B. int kennza[7] , einen Zeiger *weiter und verschiedene CStrings.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1201831</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1201831</guid><dc:creator><![CDATA[eisherz]]></dc:creator><pubDate>Wed, 03 Jan 2007 12:36:26 GMT</pubDate></item></channel></rss>