![]() |
[c++] Problem mit Liste
Liste der Anhänge anzeigen (Anzahl: 1)
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:
kann mir jmd meinen fehler zeigen?
Unhandled exception at 0x004119a9 in myList.exe: 0xC0000005: Access violation reading location 0xfeeefeee.
danke. my_list.h
Code:
my_list.cpp
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(); }
Code:
main.cpp
#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; } }
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; } |
Re: [c++] Problem mit Liste
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:
eigentlich
runner = runner->next->next;
Code:
machen?
runner->next = runner->next->next;
Edit: Semikolon ergänzt Noch was zu
Code:
1. Lieber gleich auf Groß-/Kleinschreibung achten. Sonst kompiliert dein Programm unter Unix nicht.
#include <STDIO.h>
2. In C++ haben die C-Header keine Endung, dafür ein c als Präfix. Also:
Code:
3. cstdio + iostream solltest du zusammen normalerweise nicht brauchen.
#include <cstdio>
|
Re: [c++] Problem mit Liste
erstaunlich, jetzt funktiniert es. danke.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz