<?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[Frage zu Listen &#x2F; Doppelt verkettete Liste]]></title><description><![CDATA[<p>Hallo versuche gerade die Listen zu kapieren einfach Verkettete und Doppelt verkettete.<br />
Hab es jetzt verstanden im prinzip und mal eine einfach verkettete geschrieben in einem beispiel.<br />
Bei einem Doppelt verketteten Liste gibt es jetzt noch ein zeiger auf das vorherige und ein end element nur komm ich damit nicht ganz zurecht.</p>
<p>kann mir das vielleicht mal jemand erklären anhand meines beispiels ?</p>
<p>vielen dank schonmal</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;

class Name
	{
		public:
			Name() {}
			Name(char *vn,char *nn){strcpy(vorname,vn); strcpy(nname,nn); }
			~Name() {}
			void print() {cout &lt;&lt; vorname &lt;&lt; endl &lt;&lt;nname &lt;&lt; endl;}

		private:
		char vorname[20];
		char nname[20];

	};

class Namelistelement :public Name
	{

		public:
			Namelistelement() {}
			~Namelistelement() {}

		Namelistelement *next;
		Namelistelement *previous;
		Name value;

	};

class Namelist :public Namelistelement
	{	

		public:
			Namelist() {first==NULL; end==NULL;}
			~Namelist() {}

			// push
			int push(Name &amp;obj) {

			Namelistelement *zeiger=new Namelistelement;
			zeiger-&gt;value=obj;
			zeiger-&gt;next=first;
			zeiger-&gt;previous=first;

			first=zeiger;
			end=zeiger;
			return 0;

							}
			//pop
			Name pop(void)     {

			 Name dummy;
		     Namelistelement *zeiger=first;
			 dummy=zeiger-&gt;value;
			 first=zeiger-&gt;next;

			 delete zeiger;

				dummy.print();
		return *this;
		}

		private:
			Namelistelement *first;
			Namelistelement *end;
	};

int main()

{

Name objekt1(&quot;Nadine&quot;,&quot;Muster&quot;);
Name objekt2(&quot;Max&quot;,&quot;Mustermann&quot;);
Name objekt3(&quot;Jim&quot;,&quot;Morris&quot;);

Namelist liste;

liste.push(objekt1);
liste.push(objekt2);
liste.push(objekt3);

liste.pop();
liste.pop();
liste.pop();

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/168306/frage-zu-listen-doppelt-verkettete-liste</link><generator>RSS for Node</generator><lastBuildDate>Wed, 16 Sep 2026 11:05:08 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/168306.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 20 Dec 2006 17:06:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu Listen &#x2F; Doppelt verkettete Liste on Wed, 20 Dec 2006 17:06:05 GMT]]></title><description><![CDATA[<p>Hallo versuche gerade die Listen zu kapieren einfach Verkettete und Doppelt verkettete.<br />
Hab es jetzt verstanden im prinzip und mal eine einfach verkettete geschrieben in einem beispiel.<br />
Bei einem Doppelt verketteten Liste gibt es jetzt noch ein zeiger auf das vorherige und ein end element nur komm ich damit nicht ganz zurecht.</p>
<p>kann mir das vielleicht mal jemand erklären anhand meines beispiels ?</p>
<p>vielen dank schonmal</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;

class Name
	{
		public:
			Name() {}
			Name(char *vn,char *nn){strcpy(vorname,vn); strcpy(nname,nn); }
			~Name() {}
			void print() {cout &lt;&lt; vorname &lt;&lt; endl &lt;&lt;nname &lt;&lt; endl;}

		private:
		char vorname[20];
		char nname[20];

	};

class Namelistelement :public Name
	{

		public:
			Namelistelement() {}
			~Namelistelement() {}

		Namelistelement *next;
		Namelistelement *previous;
		Name value;

	};

class Namelist :public Namelistelement
	{	

		public:
			Namelist() {first==NULL; end==NULL;}
			~Namelist() {}

			// push
			int push(Name &amp;obj) {

			Namelistelement *zeiger=new Namelistelement;
			zeiger-&gt;value=obj;
			zeiger-&gt;next=first;
			zeiger-&gt;previous=first;

			first=zeiger;
			end=zeiger;
			return 0;

							}
			//pop
			Name pop(void)     {

			 Name dummy;
		     Namelistelement *zeiger=first;
			 dummy=zeiger-&gt;value;
			 first=zeiger-&gt;next;

			 delete zeiger;

				dummy.print();
		return *this;
		}

		private:
			Namelistelement *first;
			Namelistelement *end;
	};

int main()

{

Name objekt1(&quot;Nadine&quot;,&quot;Muster&quot;);
Name objekt2(&quot;Max&quot;,&quot;Mustermann&quot;);
Name objekt3(&quot;Jim&quot;,&quot;Morris&quot;);

Namelist liste;

liste.push(objekt1);
liste.push(objekt2);
liste.push(objekt3);

liste.pop();
liste.pop();
liste.pop();

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1195532</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1195532</guid><dc:creator><![CDATA[wolframundhart]]></dc:creator><pubDate>Wed, 20 Dec 2006 17:06:05 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Listen &#x2F; Doppelt verkettete Liste on Fri, 22 Dec 2006 19:34:36 GMT]]></title><description><![CDATA[<p>Ich hab es mal versucht aber irgendwie gibts einen Fehler.</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;

class Name
	{
		public:
			Name() {}
			Name(char *vn,char *nn){strcpy(vorname,vn); strcpy(nname,nn); }
			~Name() {}
			void print() {cout &lt;&lt; vorname &lt;&lt; endl &lt;&lt;nname &lt;&lt; endl;}

		private:
		char vorname[20];
		char nname[20];

	};

class Namelistelement :public Name
	{

		public:
			Namelistelement() {}
			~Namelistelement() {}

		Namelistelement *next;
		Namelistelement *previous;
		Name value;

	};

class Namelist :public Namelistelement
	{	

		public:
			Namelist() {first=NULL; end=NULL;}
			~Namelist() 
			{
				while( !empty() )
				pop();
			}

			// push
			int push(Name &amp;obj) {

			Namelistelement *zeiger=new Namelistelement;
			zeiger-&gt;value=obj;
			zeiger-&gt;next=0;
			zeiger-&gt;previous=end;

			if (empty())
				first=zeiger;
			else
				end-&gt;next=zeiger;

			end=zeiger;
			return 0;}

			//pop
			Name pop(void)     {
				Name dummy;

		     Namelistelement *zeiger=end;
			 zeiger-&gt;value=dummy;
			 end=end-&gt;previous;
			 if (end=NULL)
				 first=NULL;
			 else
				 end-&gt;next=NULL;

			 delete zeiger;

		 dummy.print();
	     return *this;
		}

		private:
			Namelistelement *first;
			Namelistelement *end;
			bool empty() {return first==0; }
			Namelist &amp; operator = ( Namelist &amp; );
};
int main()

{

Name objekt1(&quot;Nadine&quot;,&quot;Muster&quot;);
Name objekt2(&quot;Max&quot;,&quot;Mustermann&quot;);
Name objekt3(&quot;Jim&quot;,&quot;Morris&quot;);

Namelist liste;

liste.push(objekt1);
liste.push(objekt2);
liste.push(objekt3);

liste.pop();
liste.pop();
liste.pop();

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1196789</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1196789</guid><dc:creator><![CDATA[wolframundhart]]></dc:creator><pubDate>Fri, 22 Dec 2006 19:34:36 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Listen &#x2F; Doppelt verkettete Liste on Fri, 22 Dec 2006 20:47:10 GMT]]></title><description><![CDATA[<p>std::string</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1196803</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1196803</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 22 Dec 2006 20:47:10 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Listen &#x2F; Doppelt verkettete Liste on Sat, 23 Dec 2006 21:07:29 GMT]]></title><description><![CDATA[<p>habs jetzt hinbekommen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1197160</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1197160</guid><dc:creator><![CDATA[wolframundhart]]></dc:creator><pubDate>Sat, 23 Dec 2006 21:07:29 GMT</pubDate></item></channel></rss>