<?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[segmentation fault bei einfach verkettete listen]]></title><description><![CDATA[<p>huhu gemeine <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>Also hätte ein Problem, ich schreibe mir zur Zeit eine einfach verlinkte Liste.</p>
<p>Nur hänge ich gerade daran wieso ich diesen Segmentation fault kriege:</p>
<p>hier meine main:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;kette.h&quot;

int main () {
    int lauf= 10;

    while(lauf != 0 ){
        hinzu(lauf);

        --lauf;
    }
    ausgeben();

}
</code></pre>
<p>hier meine kette.h:</p>
<pre><code class="language-cpp">struct list{
        int id;
        struct list *next;
    } *head;

void hinzu(int id){

        if(head == NULL){

            //hier in den nächsten 3 zeilen muss er sein ...
            std::cout &lt;&lt; &quot;1&quot; &lt;&lt; std::endl;
            head-&gt;id = id;
            std::cout &lt;&lt; &quot;1&quot; &lt;&lt; std::endl;

            head-&gt;next = NULL;
std::cout &lt;&lt; &quot;1&quot; &lt;&lt; std::endl;

        }else{

            struct list* llist;
            llist=head;

                while(llist-&gt;next != NULL) // wird durchgeschaut wann next = 0
                llist=llist-&gt;next;

        llist-&gt;id   = id;
        llist-&gt;next = NULL;
    }

}

void ausgeben(){

        struct list *llist;
        llist = head;
            while(llist-&gt;next != NULL ) // solange bis das letzte Listenelement durch ist
            {
            int nr = 0;

            std::cout &lt;&lt; nr &lt;&lt; &quot;:&quot; &lt;&lt; llist-&gt;id &lt;&lt; std::endl;
            ++nr;
            }
    }

    #endif	/* _KETTE_H */
</code></pre>
<p>Danke schonmal im voraus <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>
]]></description><link>https://www.c-plusplus.net/forum/topic/269567/segmentation-fault-bei-einfach-verkettete-listen</link><generator>RSS for Node</generator><lastBuildDate>Mon, 31 Aug 2026 03:22:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/269567.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 27 Jun 2010 17:39:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to segmentation fault bei einfach verkettete listen on Sun, 27 Jun 2010 17:49:00 GMT]]></title><description><![CDATA[<p>huhu gemeine <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>Also hätte ein Problem, ich schreibe mir zur Zeit eine einfach verlinkte Liste.</p>
<p>Nur hänge ich gerade daran wieso ich diesen Segmentation fault kriege:</p>
<p>hier meine main:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;kette.h&quot;

int main () {
    int lauf= 10;

    while(lauf != 0 ){
        hinzu(lauf);

        --lauf;
    }
    ausgeben();

}
</code></pre>
<p>hier meine kette.h:</p>
<pre><code class="language-cpp">struct list{
        int id;
        struct list *next;
    } *head;

void hinzu(int id){

        if(head == NULL){

            //hier in den nächsten 3 zeilen muss er sein ...
            std::cout &lt;&lt; &quot;1&quot; &lt;&lt; std::endl;
            head-&gt;id = id;
            std::cout &lt;&lt; &quot;1&quot; &lt;&lt; std::endl;

            head-&gt;next = NULL;
std::cout &lt;&lt; &quot;1&quot; &lt;&lt; std::endl;

        }else{

            struct list* llist;
            llist=head;

                while(llist-&gt;next != NULL) // wird durchgeschaut wann next = 0
                llist=llist-&gt;next;

        llist-&gt;id   = id;
        llist-&gt;next = NULL;
    }

}

void ausgeben(){

        struct list *llist;
        llist = head;
            while(llist-&gt;next != NULL ) // solange bis das letzte Listenelement durch ist
            {
            int nr = 0;

            std::cout &lt;&lt; nr &lt;&lt; &quot;:&quot; &lt;&lt; llist-&gt;id &lt;&lt; std::endl;
            ++nr;
            }
    }

    #endif	/* _KETTE_H */
</code></pre>
<p>Danke schonmal im voraus <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1918019</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1918019</guid><dc:creator><![CDATA[demonking]]></dc:creator><pubDate>Sun, 27 Jun 2010 17:49:00 GMT</pubDate></item><item><title><![CDATA[Reply to segmentation fault bei einfach verkettete listen on Sun, 27 Jun 2010 17:47:29 GMT]]></title><description><![CDATA[<p>Schön, dass du den Fehler so eingrenzen konntest. Oft sieht man hier hunderte von Zeilen irrelevanten Code, teilweise sogar externe Verlinkungen. <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>
<pre><code class="language-cpp">if(head == NULL){ 
    head-&gt;id = id;
</code></pre>
<p>Hier liegt das Problem. Wenn <code>head</code> ein Nullzeiger ist, darfst du ihn nicht dereferenzieren (was du mit <code>-&gt;</code> aber tust). Wahrscheinlich willst du sowas erreichen:</p>
<pre><code class="language-cpp">if (head == NULL)
    head = new list;
// ...
// und nach Gebrauch freigeben
delete head;
</code></pre>
<p>Übrigens: Dafür</p>
<pre><code class="language-cpp">int lauf= 10;

    while(lauf != 0 ){
        hinzu(lauf);

        --lauf;
    }
</code></pre>
<p>gibts eine For-Schleife. <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>
<pre><code class="language-cpp">for (int lauf = 10; lauf != 0; --lauf)
    hinzu(lauf);
</code></pre>
<p>Ach ja, es heisst &quot;vo<strong>r</strong>aus&quot;. Und weshalb sind wir gemein? :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1918023</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1918023</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 27 Jun 2010 17:47:29 GMT</pubDate></item><item><title><![CDATA[Reply to segmentation fault bei einfach verkettete listen on Sun, 27 Jun 2010 19:23:01 GMT]]></title><description><![CDATA[<p>new problem, wieso geht der bei mir nicht in die while schleife?!<br />
habe mal da als Test die Variable &quot;nr&quot; ausgegeben und gab nix aus ...</p>
<pre><code class="language-cpp">void hinzu(int id){

        if(head == NULL){
            head= new list;

            head-&gt;id = id;

            head-&gt;next = NULL;

        }else{

            struct list* llist;

            llist = new list;

            llist=head;

                while(llist-&gt;next != NULL) // wird durchgeschaut wann next = 0
                {llist = llist-&gt;next;}

            llist = new list;
        llist-&gt;id   = id;

        llist-&gt;next = NULL;

    }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1918028</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1918028</guid><dc:creator><![CDATA[demonking]]></dc:creator><pubDate>Sun, 27 Jun 2010 19:23:01 GMT</pubDate></item><item><title><![CDATA[Reply to segmentation fault bei einfach verkettete listen on Sun, 27 Jun 2010 21:12:42 GMT]]></title><description><![CDATA[<p>guck mal noch mal in deinem C++-Buch nach, was new macht - du verwendest es hier zumindest einmal vollkommen sinnlos (im else-zweig).<br />
das sollte aber einfach nur nen memory-leak erzeugen und nicht zu deinem beschriebenen problem führen.<br />
zeig mal die ausgabe her - vll findet sich ja dort ein fehler...</p>
<p>ansonsten:</p>
<pre><code class="language-cpp">void hinzu(int id)
{
  if(head == NULL)
  {
    head = new list;
    head-&gt;id = id;
    head-&gt;next = NULL;

    //normalerweise werden diese 3 Zielen über einen Konstruktor in einer Zeile erledigt

    return; //übersichtlicher als der lange else zweig, aber wohl geschmackssache
  }

  list* last = head;

  while(last-&gt;next != NULL)
  {
    last = last-&gt;next;
  }

  last-&gt;next = new list;
  last-&gt;next-&gt;id = id;
  last-&gt;next-&gt;next = NULL;
}
</code></pre>
<p>es sieht so aus, als ob man das new und die beiden zuweisungen nur einmal schreiben müsste - aber iwie komm ich gerad nicht auf die schnelle auf die idee, wie rum man das angehen sollte...</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1918170</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1918170</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Sun, 27 Jun 2010 21:12:42 GMT</pubDate></item><item><title><![CDATA[Reply to segmentation fault bei einfach verkettete listen on Sun, 27 Jun 2010 22:17:40 GMT]]></title><description><![CDATA[<p>danke dir unskilled werde es dann gleich versuchen.</p>
<p>Zur Ausgabe es existiert keine, da das Konsolenfenster leer ist :s</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1918184</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1918184</guid><dc:creator><![CDATA[demonking]]></dc:creator><pubDate>Sun, 27 Jun 2010 22:17:40 GMT</pubDate></item><item><title><![CDATA[Reply to segmentation fault bei einfach verkettete listen on Mon, 28 Jun 2010 10:48:28 GMT]]></title><description><![CDATA[<p>demonking schrieb:</p>
<blockquote>
<p>danke dir unskilled werde es dann gleich versuchen.</p>
<p>Zur Ausgabe es existiert keine, da das Konsolenfenster leer ist :s</p>
</blockquote>
<p>ich meinte den quellcode zur ausgabe... ^^<br />
das hinzufügen sollte so auf jeden fall funktionieren</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1918316</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1918316</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Mon, 28 Jun 2010 10:48:28 GMT</pubDate></item></channel></rss>