<?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 dem versuch eine linked list zu entwerfen...]]></title><description><![CDATA[<p>irgendwie scheint es probleme mit dem indexing zu geb, denn ich bekomme imer speicherzugrifffehler. aber auch macht die liste einen inkonsistenten eindruck (ist ja noch nicht ferttig, aber ich würde gerne wissen wie man die grundlegend besser machen könnte.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;math.h&gt;

using namespace std;

template &lt;class T&gt;
class vector
{
private:
	T *data;

public:
	//! eigentlich priv
	int index;
	vector *next;
	vector *before;
	vector *first;
	vector *last;

	//!konstruktor
	vector();
	vector(T &amp;v);
	vector(vector &amp;v);
	~vector();

	//! setter
	bool push_back(T data);

	//! cleaner
	void delete_at(int i);
	void clear();

	//! getter
	T get_last();
	T get_first();
	T get_at(int index);
}; 

//! konstrukoren &amp; destruktoren
template &lt;class T&gt;
vector&lt;T&gt;::vector() {
	index = 0;

	data = new T;
	data = NULL;

	first = this;

	last = NULL;
	next = NULL;
	before = NULL;
}

template &lt;class T&gt;
vector&lt;T&gt;::~vector()
{

}

//! daten-settups
template &lt;class T&gt;
bool vector&lt;T&gt;::push_back(T data) {
	next = new vector;
	if(data != NULL) {
		//daten setzen
		next-&gt;data = &amp;data;
		//linken
		next-&gt;before = this;
		next-&gt;first = first;
		next-&gt;last = next;
		//indexing
		next-&gt;index = index++;

		return true;
	}
	else {
		cout&lt;&lt;&quot;can't set data - NULLPOINTER&quot;&lt;&lt;endl;

		return false;
	}
}

//! getter
template &lt;class T&gt;
T vector&lt;T&gt;::get_last()
{
// 	if(data != NULL)
		return *next-&gt;data;
// 	else cout&lt;&lt;&quot;can't get data - NULLPOINTER&quot;&lt;&lt;endl;
}

//! getter
template &lt;class T&gt;
T vector&lt;T&gt;::get_at(int ind)
{
	vector *pos = first;
cout&lt;&lt;&quot;index: &quot;&lt;&lt;pos-&gt;index&lt;&lt;endl;
cout&lt;&lt;&quot;index: &quot;&lt;&lt;pos-&gt;next-&gt;index&lt;&lt;endl;
cout&lt;&lt;&quot;index: &quot;&lt;&lt;pos-&gt;next-&gt;next-&gt;index&lt;&lt;endl;
cout&lt;&lt;&quot;index: &quot;&lt;&lt;pos-&gt;next-&gt;next-&gt;next-&gt;index&lt;&lt;endl;
cout&lt;&lt;&quot;index: &quot;&lt;&lt;pos-&gt;next-&gt;next-&gt;next-&gt;next-&gt;index&lt;&lt;endl;
	while(true) {
		pos = pos-&gt;next;
		if(pos-&gt;index == ind) {
			return *pos-&gt;data;
		}
		if(pos == last) {
			return NULL;
		}
	}
}

template &lt;class T&gt;
T vector&lt;T&gt;::get_first()
{
// 	if(data != NULL)
		return *first-&gt;data;
// 	else cout&lt;&lt;&quot;can't get data - NULLPOINTER&quot;&lt;&lt;endl;
}

int main()
{
	vector&lt;int&gt; v;
	v.push_back(1);
	v.push_back(2);
	v.push_back(3);
	v.push_back(4);
	v.push_back(5);

	cout&lt;&lt;v.get_at(0);
// 	cout&lt;&lt;v.get_last()&lt;&lt;endl;
// 	cout&lt;&lt;v.get_first()&lt;&lt;endl;

	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/196331/problem-mit-dem-versuch-eine-linked-list-zu-entwerfen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 30 Sep 2026 10:06:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/196331.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 28 Oct 2007 13:53:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to problem mit dem versuch eine linked list zu entwerfen... on Sun, 28 Oct 2007 13:53:06 GMT]]></title><description><![CDATA[<p>irgendwie scheint es probleme mit dem indexing zu geb, denn ich bekomme imer speicherzugrifffehler. aber auch macht die liste einen inkonsistenten eindruck (ist ja noch nicht ferttig, aber ich würde gerne wissen wie man die grundlegend besser machen könnte.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;math.h&gt;

using namespace std;

template &lt;class T&gt;
class vector
{
private:
	T *data;

public:
	//! eigentlich priv
	int index;
	vector *next;
	vector *before;
	vector *first;
	vector *last;

	//!konstruktor
	vector();
	vector(T &amp;v);
	vector(vector &amp;v);
	~vector();

	//! setter
	bool push_back(T data);

	//! cleaner
	void delete_at(int i);
	void clear();

	//! getter
	T get_last();
	T get_first();
	T get_at(int index);
}; 

//! konstrukoren &amp; destruktoren
template &lt;class T&gt;
vector&lt;T&gt;::vector() {
	index = 0;

	data = new T;
	data = NULL;

	first = this;

	last = NULL;
	next = NULL;
	before = NULL;
}

template &lt;class T&gt;
vector&lt;T&gt;::~vector()
{

}

//! daten-settups
template &lt;class T&gt;
bool vector&lt;T&gt;::push_back(T data) {
	next = new vector;
	if(data != NULL) {
		//daten setzen
		next-&gt;data = &amp;data;
		//linken
		next-&gt;before = this;
		next-&gt;first = first;
		next-&gt;last = next;
		//indexing
		next-&gt;index = index++;

		return true;
	}
	else {
		cout&lt;&lt;&quot;can't set data - NULLPOINTER&quot;&lt;&lt;endl;

		return false;
	}
}

//! getter
template &lt;class T&gt;
T vector&lt;T&gt;::get_last()
{
// 	if(data != NULL)
		return *next-&gt;data;
// 	else cout&lt;&lt;&quot;can't get data - NULLPOINTER&quot;&lt;&lt;endl;
}

//! getter
template &lt;class T&gt;
T vector&lt;T&gt;::get_at(int ind)
{
	vector *pos = first;
cout&lt;&lt;&quot;index: &quot;&lt;&lt;pos-&gt;index&lt;&lt;endl;
cout&lt;&lt;&quot;index: &quot;&lt;&lt;pos-&gt;next-&gt;index&lt;&lt;endl;
cout&lt;&lt;&quot;index: &quot;&lt;&lt;pos-&gt;next-&gt;next-&gt;index&lt;&lt;endl;
cout&lt;&lt;&quot;index: &quot;&lt;&lt;pos-&gt;next-&gt;next-&gt;next-&gt;index&lt;&lt;endl;
cout&lt;&lt;&quot;index: &quot;&lt;&lt;pos-&gt;next-&gt;next-&gt;next-&gt;next-&gt;index&lt;&lt;endl;
	while(true) {
		pos = pos-&gt;next;
		if(pos-&gt;index == ind) {
			return *pos-&gt;data;
		}
		if(pos == last) {
			return NULL;
		}
	}
}

template &lt;class T&gt;
T vector&lt;T&gt;::get_first()
{
// 	if(data != NULL)
		return *first-&gt;data;
// 	else cout&lt;&lt;&quot;can't get data - NULLPOINTER&quot;&lt;&lt;endl;
}

int main()
{
	vector&lt;int&gt; v;
	v.push_back(1);
	v.push_back(2);
	v.push_back(3);
	v.push_back(4);
	v.push_back(5);

	cout&lt;&lt;v.get_at(0);
// 	cout&lt;&lt;v.get_last()&lt;&lt;endl;
// 	cout&lt;&lt;v.get_first()&lt;&lt;endl;

	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1393581</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1393581</guid><dc:creator><![CDATA[bogon5]]></dc:creator><pubDate>Sun, 28 Oct 2007 13:53:06 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit dem versuch eine linked list zu entwerfen... on Sun, 28 Oct 2007 14:32:32 GMT]]></title><description><![CDATA[<p>Warum so ein Aufwand?<br />
Das was du vorhast ist schon in der STL</p>
<pre><code class="language-cpp">#include&lt;vector&gt; 
... 
vector MeinVektor&lt;int&gt;;
</code></pre>
<p>Nutz doch das was fertig ist <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="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1393604</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1393604</guid><dc:creator><![CDATA[PPPPPPPPPP]]></dc:creator><pubDate>Sun, 28 Oct 2007 14:32:32 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit dem versuch eine linked list zu entwerfen... on Sun, 28 Oct 2007 14:52:26 GMT]]></title><description><![CDATA[<p>ich denke mal, dass man dadurch etwas lernen möchte...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1393617</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1393617</guid><dc:creator><![CDATA[horst666]]></dc:creator><pubDate>Sun, 28 Oct 2007 14:52:26 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit dem versuch eine linked list zu entwerfen... on Sun, 28 Oct 2007 15:48:26 GMT]]></title><description><![CDATA[<p>ich habe mal die liste besser gemacht, leider noch mit nem klitzkleinem problem bei dem aufinden des ersten elementes:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;math.h&gt;

using namespace std;

template &lt;class T&gt;
class vector
{
private:
	T *data;

public:
	//! eigentlich priv
	int index;
	vector *next;
	vector *prev;

	//!konstruktor
	vector();
	vector(T &amp;v);
	vector(vector &amp;v);
	~vector();

	//! setter
	bool push_back(T data);
	//! cleaner
	void delete_at(int i);
	void clear();
	//! getter
	T get_last();
	T get_first();
	T get_at(int index);
}; 

//! konstrukoren &amp; destruktoren
template &lt;class T&gt;
vector&lt;T&gt;::vector() {
	next = NULL;
	prev = NULL;

	data = NULL;
	index = 0;
}

template &lt;class T&gt;
vector&lt;T&gt;::~vector()
{

}

//! daten-settups
template &lt;class T&gt;
bool vector&lt;T&gt;::push_back(T data) {
	vector *new_node = new vector;
	new_node-&gt;data = &amp;data;
	new_node-&gt;next = NULL;

	//verknüpfung zum alten beim neuen element
	new_node-&gt;prev = this-&gt;next;
cout&lt;&lt;&quot;new_node-&gt;prev: &quot;&lt;&lt;new_node-&gt;prev&lt;&lt;endl;
	//verknüpfung zum neuen beim alten element
	this-&gt;next = new_node;
cout&lt;&lt;&quot;this-&gt;next: &quot;&lt;&lt;this-&gt;next&lt;&lt;endl;

	new_node-&gt;index = index;
	index++;
}

//! getter
template &lt;class T&gt;
T vector&lt;T&gt;::get_last()
{
// 	if(data != NULL)
cout&lt;&lt;&quot;THIS: &quot;&lt;&lt;next&lt;&lt;endl;
		return *next-&gt;data;
// 	else cout&lt;&lt;&quot;can't get data - NULLPOINTER&quot;&lt;&lt;endl;
}

template &lt;class T&gt;
T vector&lt;T&gt;::get_first()
{
	while(true) {
		cout&lt;&lt;&quot;index: &quot;&lt;&lt;next&lt;&lt;&quot; data: &quot;&lt;&lt;*next-&gt;data&lt;&lt;endl;
		if(next-&gt;index == 0) {
			return *next-&gt;data;
		}
		else {
			next = next-&gt;prev;
		}
	}
}

//! getter
template &lt;class T&gt;
T vector&lt;T&gt;::get_at(int ind)
{
	vector *pos;
	while(pos != NULL) {
		pos = this-&gt;prev;
		if(pos-&gt;index == ind) {
			return *pos-&gt;data;
		}
	}
}

int main()
{
	vector&lt;int&gt; v;
	v.push_back(1);
	v.push_back(2);
	v.push_back(3);
	v.push_back(4);
	v.push_back(5);

// 	cout&lt;&lt;v.get_at(5);
	cout&lt;&lt;v.get_last()&lt;&lt;endl;
	cout&lt;&lt;v.get_first()&lt;&lt;endl;

	return 0;
}
</code></pre>
<p>lasst mal durchlaufen und schaut was ich für ne ausgabe bekomme:</p>
<pre><code>qfya:~/devel&gt; ./a.out
new_node-&gt;prev: 0
this-&gt;next: 0x804b008
new_node-&gt;prev: 0x804b008
this-&gt;next: 0x804b020
new_node-&gt;prev: 0x804b020
this-&gt;next: 0x804b038
new_node-&gt;prev: 0x804b038
this-&gt;next: 0x804b050
new_node-&gt;prev: 0x804b050
this-&gt;next: 0x804b068
THIS: 0x804b068
5
index: 0x804b068 data: 134514616
index: 0x804b050 data: 134514616
index: 0x804b038 data: 134514616
index: 0x804b020 data: 134514616
index: 0x804b008 data: 134514616
134514616
</code></pre>
<p>also man sieht:<br />
-ein cout&lt;&lt;v.get_last()&lt;&lt;endl; liefert korrekterweise:</p>
<pre><code>THIS: 0x804b068
5
</code></pre>
<p>die adresse stimmt mit den erzeugten obejkten überein...</p>
<p>dann der versuch die liste zu durchlaufen:<br />
cout&lt;&lt;v.get_first()&lt;&lt;endl;<br />
der aufruf liefert ein paar wunderbare adressen:<br />
index: 0x804b068 data: 134514616<br />
index: 0x804b050 data: 134514616<br />
index: 0x804b038 data: 134514616<br />
index: 0x804b020 data: 134514616<br />
index: 0x804b008 data: 134514616</p>
<p>aber warum keine daten <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="🙄"
    /> denn die adresse bsp-weise: 0x804b068 enthält die 5 und wurde ja auch schon ausgegeben. was soll das????</p>
<p>achso... und wegen dem grund... natürlich weils mich interessiert, ich wollte einfach nur wissen wie ich ne liste implementiere. da man allzu leicht bei der benutzung von sachen wie qt verlernt mit zeigern zu arbeiten, wie man sieht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1393649</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1393649</guid><dc:creator><![CDATA[bogon5]]></dc:creator><pubDate>Sun, 28 Oct 2007 15:48:26 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit dem versuch eine linked list zu entwerfen... on Sun, 28 Oct 2007 15:50:08 GMT]]></title><description><![CDATA[<p>die get_at habe ich noch nicht korrigiert, weils - ich weiß dass die noch müll ist- es geht erstmal drum den fehler in der get_first zu finden, oder evtl im konstr... ich denke die fkt. ist sauber ):</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1393651</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1393651</guid><dc:creator><![CDATA[bogon5]]></dc:creator><pubDate>Sun, 28 Oct 2007 15:50:08 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit dem versuch eine linked list zu entwerfen... on Mon, 29 Oct 2007 09:01:56 GMT]]></title><description><![CDATA[<p>Deine Daten sind kaputt, weil du die Adresse der Daten speicherst (bei dem Aufruf von z.B. push_back(1) übergibt du eine temporäre Variable).<br />
Also speicher die Daten direkt, nicht als Zeiger:</p>
<pre><code class="language-cpp">private:
    T data;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1393965</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1393965</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Mon, 29 Oct 2007 09:01:56 GMT</pubDate></item></channel></rss>