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;
}