From 737d605ca1f964241ef65c949311c5f49954d439 Mon Sep 17 00:00:00 2001 From: Hannes Kuchelmeister Date: Thu, 31 Dec 2020 18:13:39 +0100 Subject: [PATCH] modify locate to not use tuples instead use pointers --- Assignment_2/LazyList.cpp | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/Assignment_2/LazyList.cpp b/Assignment_2/LazyList.cpp index 419a7cf..1dcad98 100644 --- a/Assignment_2/LazyList.cpp +++ b/Assignment_2/LazyList.cpp @@ -8,7 +8,7 @@ class LazySet:public Set { protected: Node* first; - std::tuple locate(int element); + void locate(int element, Node* prev, Node* cur); public: LazySet(); @@ -20,9 +20,9 @@ class LazySet:public Set { LazySet::LazySet() : Set() { } bool LazySet::add(int element) { - auto tuple = locate(element); - Node* p = std::get<0>(tuple); - Node* c = std::get<1>(tuple); + Node* p; + Node* c; + locate(element, p, c); if (c->is_equal(element)) { p->unlock(); @@ -38,9 +38,9 @@ bool LazySet::add(int element) { } } bool LazySet::rmv(int element) { - auto tuple = locate(element); - Node* p = std::get<0>(tuple); - Node* c = std::get<1>(tuple); + Node* p; + Node* c; + locate(element, p, c); if (c->is_equal(element)) { c->deleted = true; @@ -68,7 +68,10 @@ bool LazySet::ctn(int element) { } -std::tuple LazySet::locate(int element) { +void LazySet::locate(int element, Node* prev, Node* cur) { + prev = Node::Dummy(); + cur = Node::Dummy(); + Node* p = first; Node* c = p->next; @@ -79,12 +82,10 @@ std::tuple LazySet::locate(int element) { p->lock(); c->lock(); if (!p->deleted && !c->deleted && p->next == c) { - p->unlock(); - c->unlock(); - return {p, c}; + prev = p; + cur = c; } p->unlock(); c->unlock(); - return {Node::Dummy(), Node::Dummy()}; } \ No newline at end of file