From 83e1a4c03176843e8795afdb27c6473736482108 Mon Sep 17 00:00:00 2001 From: Hannes Kuchelmeister Date: Wed, 30 Dec 2020 21:13:44 +0100 Subject: [PATCH] improved FineList --- Assignment_2/FineList.cpp | 2 +- Assignment_2/Node.cpp | 25 ++++++++++++++++++------- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/Assignment_2/FineList.cpp b/Assignment_2/FineList.cpp index 2d0e7bb..6276b8f 100644 --- a/Assignment_2/FineList.cpp +++ b/Assignment_2/FineList.cpp @@ -58,7 +58,7 @@ bool FineSet::rmv(int element) { c->lock(); } - if (c->data == element) { + if (c->is_equal(element)) { p->next = c->next; c->unlock(); diff --git a/Assignment_2/Node.cpp b/Assignment_2/Node.cpp index 6800d6e..75f33b4 100644 --- a/Assignment_2/Node.cpp +++ b/Assignment_2/Node.cpp @@ -1,22 +1,29 @@ #include class Node { -public: - int data; - bool is_dummy; - Node* next; - std::mutex mut; + protected: + int data; + bool is_dummy; + std::mutex mut; + public: + Node* next; + Node(int element); static Node* Dummy(); + // Dummy(); + void lock(); void unlock(); bool is_smaller_than(int n); + bool is_smaller_than(Node* n); bool is_equal(int n); }; + + Node::Node(int element){ - this->data = element; - this->is_dummy = false; + data = element; + is_dummy = false; } Node* Node::Dummy(){ @@ -25,6 +32,10 @@ Node* Node::Dummy(){ return n; } +bool Node::is_smaller_than(Node* n) { + return this->is_smaller_than(n->data); +} + bool Node::is_smaller_than(int n) { // Everything is smaller than a dummy -> false return this->data < n && !this->is_dummy;