diff options
author | jonas <himself@jonasgunz.de> | 2017-02-07 07:21:42 +0100 |
---|---|---|
committer | jonas <himself@jonasgunz.de> | 2017-02-07 07:21:42 +0100 |
commit | 04d43ddefcec872793978680542f0b9d746fab35 (patch) | |
tree | 8a05b15bd39951a2e982e46b5b2b2a6d52eac8c8 | |
parent | b30ae0e49c76f5038f9ab6dc9a4d45517f91c827 (diff) | |
download | tree-04d43ddefcec872793978680542f0b9d746fab35.tar.gz |
Error in cNode.cpp:26
delete data; causes exception
y tho?
-rw-r--r-- | tree/src/cNode.cpp | 15 | ||||
-rw-r--r-- | tree/src/cTree.cpp | 8 | ||||
-rw-r--r-- | tree/src/cTree.h | 1 | ||||
-rw-r--r-- | tree/src/main.cpp | 16 |
4 files changed, 31 insertions, 9 deletions
diff --git a/tree/src/cNode.cpp b/tree/src/cNode.cpp index c7d5cf4..265a2b9 100644 --- a/tree/src/cNode.cpp +++ b/tree/src/cNode.cpp @@ -22,8 +22,10 @@ cDatanode::cDatanode(cData* _data) cDatanode::~cDatanode() { + cout << "DestructorNode\n"; delete data; - data = NULL; + delete nextSmaller; + delete nextBigger; }//Destructor cData cDatanode::getDataObject() @@ -34,11 +36,9 @@ cData cDatanode::getDataObject() void cDatanode::insert(cData* _data, cNode** _me) { if (*_data > *data) - //nextBigger->isEnd() ? (void)(nextBigger = new cDatanode(_data)) : nextBigger->insert(_data); nextBigger->insert(_data, &nextBigger); else nextSmaller->insert(_data, &nextSmaller); - //nextSmaller->isEnd() ? (void)(nextSmaller = new cDatanode(_data)) : nextSmaller->insert(_data); }//insert void cDatanode::remove(cData* _data, list<cData>* _list, cNode** _me) @@ -47,7 +47,6 @@ void cDatanode::remove(cData* _data, list<cData>* _list, cNode** _me) { nextSmaller->getSortet(_list); nextBigger->getSortet(_list); - clear(); *_me = new cEndnode(); delete this; } @@ -82,13 +81,17 @@ void cDatanode::getSortet(list<cData>* _list) void cDatanode::clear() { - nextSmaller->clear(); + /*nextSmaller->clear(); delete nextSmaller; nextSmaller = NULL; nextBigger->clear(); delete nextBigger; - nextBigger = NULL; + nextBigger = NULL;*/ + + delete nextSmaller; + delete nextBigger; + nextSmaller = nextBigger = NULL; } void cDatanode::draw(int _depth) diff --git a/tree/src/cTree.cpp b/tree/src/cTree.cpp index 5ac379e..3ab7324 100644 --- a/tree/src/cTree.cpp +++ b/tree/src/cTree.cpp @@ -14,7 +14,6 @@ cTree::cTree() cTree::~cTree() { - root->clear(); delete root; } @@ -57,6 +56,13 @@ cData* cTree::search(string _search) return root->search(_search); } +void cTree::clear() +{ + //root->clear(); + cout << "clearTree\n"; + delete root; + root = new cEndnode(); +} diff --git a/tree/src/cTree.h b/tree/src/cTree.h index db930ed..b18c5c3 100644 --- a/tree/src/cTree.h +++ b/tree/src/cTree.h @@ -23,6 +23,7 @@ public: void balance(); void getList(list<cData>*); void remove(cData*); + void clear(); cData* search(string); void draw(); diff --git a/tree/src/main.cpp b/tree/src/main.cpp index 9a5a934..0635602 100644 --- a/tree/src/main.cpp +++ b/tree/src/main.cpp @@ -12,12 +12,24 @@ int main (void) { cTree* a = new cTree(); a->insert("Hallo"); - a->insert("faggot"); - a->insert("Arschloch"); + a->insert("servus"); + a->insert("moinmoin"); a->draw(); cout << "-------------------" << endl; a->remove(a->search("Hallo")); a->draw(); + cout << "clear\n"; + a->clear(); + + /*while(1) + { + a->insert("h"); + a->insert("y"); + a->insert("k"); + a->insert("h"); + a->remove(a->search("h")); + a->clear(); + }*/ return 0; } |