summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar jonas <himself@jonasgunz.de> 2017-02-07 07:21:42 +0100
committerGravatar jonas <himself@jonasgunz.de> 2017-02-07 07:21:42 +0100
commit04d43ddefcec872793978680542f0b9d746fab35 (patch)
tree8a05b15bd39951a2e982e46b5b2b2a6d52eac8c8
parentb30ae0e49c76f5038f9ab6dc9a4d45517f91c827 (diff)
downloadtree-04d43ddefcec872793978680542f0b9d746fab35.tar.gz
Error in cNode.cpp:26
delete data; causes exception y tho?
-rw-r--r--tree/src/cNode.cpp15
-rw-r--r--tree/src/cTree.cpp8
-rw-r--r--tree/src/cTree.h1
-rw-r--r--tree/src/main.cpp16
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;
}