This commit is contained in:
Zach S-B 2020-09-18 16:32:26 +10:00
parent 5ad212de53
commit 3d42110395

View File

@ -6,7 +6,7 @@ Last Modified: 16/09/2020
Description:
*/
//Includes
#include <iostream>
#include "LinkedList.h"
#include <string>
@ -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; i<getWordCount(); i++)
{
if ((temp==head)&&(temp->getData()==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; i<getWordCount(); i++)
{
if (temp->getData()==countString)
count++;
temp = temp->getNext();
}
return count;
}
//Overload Operators
std::ostream& operator << (std::ostream& out, const LinkedList& list)
{
std::cout<<list.buildString();
@ -214,60 +267,6 @@ void LinkedList::operator += (LinkedList& list2)
}
int LinkedList::count(valueType countString)
{
Node* temp=head;
int count=0;
for (int i = 0; i<getWordCount(); i++)
{
if (temp->getData()==countString)
count++;
temp = temp->getNext();
}
return count;
}
void LinkedList::remove(const valueType removeString)
{
Node* temp=head;
Node* tempToDel;
for (int i = 0; i<getWordCount(); i++)
{
if ((temp==head)&&(temp->getData()==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<<std::endl;
}
}