Einzelnen Beitrag anzeigen

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