diff --git a/LinkedList.cpp b/LinkedList.cpp index f098ddd..886035a 100644 --- a/LinkedList.cpp +++ b/LinkedList.cpp @@ -6,7 +6,7 @@ Last Modified: 16/09/2020 Description: */ - +//Includes #include #include "LinkedList.h" #include @@ -21,7 +21,7 @@ LinkedList::LinkedList() LinkedList::~LinkedList() {} - +//Add to list functions void LinkedList::addToHead(const valueType& data) { Node* newNode = new Node(data); @@ -85,7 +85,6 @@ void LinkedList::addToTail(const valueType& data) //Data Mutators - void LinkedList::add(const valueType addString) { valueType word; @@ -126,6 +125,45 @@ void LinkedList::add(const valueType addString) } } +void LinkedList::remove(const valueType removeString) +{ + Node* temp=head; + Node* tempToDel; + + for (int i = 0; igetData()==removeString)) + { + temp->getNext()->setPrev(NULL); + head=temp->getNext(); + tempToDel = temp; + temp=temp->getNext(); + delete tempToDel; + } + else if ((temp==tail)&&(temp->getData()==removeString)) + { + temp->getPrev()->setNext(NULL); + tail=temp->getPrev(); + tempToDel = temp; + temp=temp->getNext(); + delete tempToDel; + } + else if (temp->getData()==removeString) + { + //Connect the nodes around Temp + temp->getPrev()->setNext(temp->getNext()); + temp->getNext()->setPrev(temp->getPrev()); + + tempToDel = temp; + temp=temp->getNext(); + delete tempToDel; + } + else + temp=temp->getNext(); + } + +} + //Queries LinkedList::valueType LinkedList::getNodeData(int wordNum) const @@ -195,6 +233,21 @@ LinkedList::valueType LinkedList::buildString() const return sentence; } +int LinkedList::count(valueType countString) +{ + Node* temp=head; + int count=0; + + for (int i = 0; igetData()==countString) + count++; + temp = temp->getNext(); + } + return count; +} + +//Overload Operators std::ostream& operator << (std::ostream& out, const LinkedList& list) { std::cout<getData()==countString) - count++; - temp = temp->getNext(); - } - return count; -} - - -void LinkedList::remove(const valueType removeString) -{ - Node* temp=head; - Node* tempToDel; - - for (int i = 0; igetData()==removeString)) - { - temp->getNext()->setPrev(NULL); - head=temp->getNext(); - tempToDel = temp; - temp=temp->getNext(); - delete tempToDel; - } - else if ((temp==tail)&&(temp->getData()==removeString)) - { - temp->getPrev()->setNext(NULL); - tail=temp->getPrev(); - tempToDel = temp; - temp=temp->getNext(); - delete tempToDel; - } - else if (temp->getData()==removeString) - { - //Connect the nodes around Temp - temp->getPrev()->setNext(temp->getNext()); - temp->getNext()->setPrev(temp->getPrev()); - - tempToDel = temp; - temp=temp->getNext(); - delete tempToDel; - } - else - temp=temp->getNext(); - } - -} - void LinkedList::sort() { Node* temp=head; @@ -309,5 +308,4 @@ void LinkedList::sort() }while(temp->getNext()!=NULL); std::cout<