AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

[c++] Problem mit Liste

Ein Thema von fwsp · begonnen am 8. Jan 2008 · letzter Beitrag vom 8. Jan 2008
Antwort Antwort
fwsp
(Gast)

n/a Beiträge
 
#1

[c++] Problem mit Liste

  Alt 8. Jan 2008, 18:22
hallo,

ich mache grad meine ersten ernsthaften schritte in c++ und versuche eine einfach verlinkte liste zu erstellen. leider zerschiesst mir meine remove methode die ganze liste. das zu löschende element wird nicht gelöscht und auf einen anderen wert gesetzt und die liste wird demontiert. ich benutz Visual Express 2008, und die IDE gibt folgenden Fehler aus:
Code:
Unhandled exception at 0x004119a9 in myList.exe: 0xC0000005: Access violation reading location 0xfeeefeee.
kann mir jmd meinen fehler zeigen?
danke.

my_list.h
Code:
class my_list
{
private:
   struct node
   {
      int data;
      node *next;
   } *head;

public:
   my_list();
   int count();
   void insert(int e);
   void remove(int e);
   void show_all();
}
my_list.cpp
Code:
#include <STDIO.h>
#include <iostream>
#include "my_list.h"

;using namespace std;

my_list::my_list()
{
   head = new node;
   head->next = NULL;
}

void my_list::insert(int e)
{
   node *newitem, *runner;

   runner = head;
   while (runner->next != NULL)
      runner = runner->next;

   newitem = new node;
   newitem->data = e;
   newitem->next = NULL;
   runner->next = newitem;
}

void my_list::remove(int e)
{
   node *runner, *tmp;
   runner = head;

   while (runner->next != NULL)
   {
      if (runner->next->data == e)
      {
         tmp = runner->next;
         runner = runner->next->next;
         delete tmp;
         return;
      }
      else
         runner = runner->next;
   }
}
main.cpp
Code:
#include <iostream>
#include "my_list.h"

;using namespace std;

int main()
{
   my_list list;

   for (int i = 0; i < 100; i++)
      list.insert(i);

   list.show_all();
   cout << list.count() << endl;

   list.remove(5);
   list.show_all();

   getchar();
   return EXIT_SUCCESS;
}
Miniaturansicht angehängter Grafiken
my_list_195.png  
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#2

Re: [c++] Problem mit Liste

  Alt 8. Jan 2008, 18:31
Auf Anhieb finde ich den Fehler nicht, aber zwei Tipps:
1. 0xfeeefeee deutet auf nicht initialisierten Speicher hin, oder in deinem Fall auf einen nichtinitialisierten Zeiger.
2. Der Debugger ist dein Freund, meistens ist es gerade bei solchen Dingen recht einfach, damit den Ablauf zu verfolgen. Eventuell hilft es dir hier schon, bei der Exception einfach etwas aufwärts auf dem Stack zu wandern und zu gucken, wo du mal einen ungültigen Zeiger dereferenzierst.

Vielleicht steckt dein Fehler in Zeile 37, willst du eventuell statt
Code:
runner = runner->next->next;
eigentlich
Code:
runner->next = runner->next->next;
machen?

Edit: Semikolon ergänzt
Noch was zu
Code:
#include <STDIO.h>
1. Lieber gleich auf Groß-/Kleinschreibung achten. Sonst kompiliert dein Programm unter Unix nicht.
2. In C++ haben die C-Header keine Endung, dafür ein c als Präfix. Also:
Code:
#include <cstdio>
3. cstdio + iostream solltest du zusammen normalerweise nicht brauchen.
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
fwsp
(Gast)

n/a Beiträge
 
#3

Re: [c++] Problem mit Liste

  Alt 8. Jan 2008, 18:33
erstaunlich, jetzt funktiniert es. danke.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz