From b2e051a633935a9fb13d0acc796b29c962492d62 Mon Sep 17 00:00:00 2001 From: Shaun Reed Date: Wed, 15 Apr 2020 07:53:14 -0400 Subject: [PATCH 1/4] Remove compiled files, executable. Update gitignore --- .gitignore | 2 ++ plates/linkedlists/driver | Bin 58168 -> 0 bytes plates/linkedlists/linkedlist.o | Bin 47728 -> 0 bytes 3 files changed, 2 insertions(+) delete mode 100755 plates/linkedlists/driver delete mode 100644 plates/linkedlists/linkedlist.o diff --git a/.gitignore b/.gitignore index fe7cb19..d20f55a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ build/ **/.vscode +**/driver +**/*.o diff --git a/plates/linkedlists/driver b/plates/linkedlists/driver deleted file mode 100755 index 317bca3b1253e0781f1a0132218f53362f42a03d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58168 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 diff --git a/plates/linkedlists/linkedlist.o b/plates/linkedlists/linkedlist.o deleted file mode 100644 index c00b504ff56b233abb3dbf1ce3820b6cf0017e10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47728 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 From ba91c8956afaa81b55eda196baf5e4bb54485337 Mon Sep 17 00:00:00 2001 From: Shaun Reed Date: Wed, 15 Apr 2020 07:54:32 -0400 Subject: [PATCH 2/4] Add copy assignment, constructor, destructor --- plates/linkedlists/linkedlist.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/plates/linkedlists/linkedlist.cpp b/plates/linkedlists/linkedlist.cpp index 2552e23..e618ac6 100644 --- a/plates/linkedlists/linkedlist.cpp +++ b/plates/linkedlists/linkedlist.cpp @@ -11,7 +11,7 @@ */ SingleList::SingleList(const SingleList& rhs) { - + head = rhs.head; } /** @@ -22,6 +22,8 @@ SingleList::SingleList(const SingleList& rhs) */ SingleList& SingleList::operator=(const SingleList& rhs) { + makeEmpty(); + head = rhs.head; return *this; } @@ -30,6 +32,7 @@ SingleList& SingleList::operator=(const SingleList& rhs) */ SingleList::~SingleList() { + makeEmpty(); } /****************************************************************************** From cf38979faaa65cd9a8411522a240cab01ec57902 Mon Sep 17 00:00:00 2001 From: Shaun Reed Date: Wed, 15 Apr 2020 11:58:07 -0400 Subject: [PATCH 3/4] Rename linkedlist to singlelist --- plates/linkedlists/Makefile | 10 ++-- plates/linkedlists/driver.cpp | 12 ++++- plates/linkedlists/linkedlist.h | 34 ------------- .../{linkedlist.cpp => singlelist.cpp} | 12 ++++- plates/linkedlists/singlelist.h | 48 +++++++++++++++++++ 5 files changed, 75 insertions(+), 41 deletions(-) delete mode 100644 plates/linkedlists/linkedlist.h rename plates/linkedlists/{linkedlist.cpp => singlelist.cpp} (88%) create mode 100644 plates/linkedlists/singlelist.h diff --git a/plates/linkedlists/Makefile b/plates/linkedlists/Makefile index 487a578..dde1fa7 100644 --- a/plates/linkedlists/Makefile +++ b/plates/linkedlists/Makefile @@ -5,15 +5,15 @@ CXXFLAGS=-g -Wall # Driver ############################################################################### -driver: driver.cpp linkedlist.o - ${CXX} ${CXXFLAGS} driver.cpp linkedlist.o -o driver +driver: driver.cpp singlelist.o + ${CXX} ${CXXFLAGS} driver.cpp singlelist.o -o driver ############################################################################### -# LinkedList +# SingleList ############################################################################### -linkedlist.o: linkedlist.cpp linkedlist.h - ${CXX} ${CXXFLAGS} -c linkedlist.cpp -o linkedlist.o +singlelist.o: singlelist.cpp singlelist.h + ${CXX} ${CXXFLAGS} -c singlelist.cpp -o singlelist.o ############################################################################### # Clean diff --git a/plates/linkedlists/driver.cpp b/plates/linkedlists/driver.cpp index 4bfbb5d..d345cab 100644 --- a/plates/linkedlists/driver.cpp +++ b/plates/linkedlists/driver.cpp @@ -1,4 +1,14 @@ -#include "linkedlist.h" +/*############################################################################# +## Author: Shaun Reed ## +## Legal: All Content (c) 2020 Shaun Reed, all rights reserved ## +## About: A driver program to test a singly linked list ## +## ## +## Contact: shaunrd0@gmail.com | URL: www.shaunreed.com | GitHub: shaunrd0 ## +############################################################################## +## driver.cpp +*/ + +#include "singlelist.h" #include enum OPS { diff --git a/plates/linkedlists/linkedlist.h b/plates/linkedlists/linkedlist.h deleted file mode 100644 index 6c64578..0000000 --- a/plates/linkedlists/linkedlist.h +++ /dev/null @@ -1,34 +0,0 @@ -#ifndef LINKEDLIST_H -#define LINKEDLIST_H - -#include - -// Singly Linked List -class SingleList{ - public: - SingleList() : head(NULL) {}; - SingleList(const SingleList& rhs); - SingleList& operator=(const SingleList& rhs); - ~SingleList(); - bool insert(int val); - bool insert(int val, int key); - void makeEmpty(); - bool isEmpty() const; - int peek() const; - void print() const; - bool find(int val) const; - - private: - struct Node { - int data; - Node *next; - Node(): data(00), next(NULL) {}; - Node(int val): data(val), next(NULL) {}; - }; - Node *head; - Node* find(int val, Node *start) const; - Node* findPrevious(int val, Node *start) const; - void print(Node *start) const; -}; - -#endif diff --git a/plates/linkedlists/linkedlist.cpp b/plates/linkedlists/singlelist.cpp similarity index 88% rename from plates/linkedlists/linkedlist.cpp rename to plates/linkedlists/singlelist.cpp index e618ac6..6200098 100644 --- a/plates/linkedlists/linkedlist.cpp +++ b/plates/linkedlists/singlelist.cpp @@ -1,4 +1,14 @@ -#include "linkedlist.h" +/*############################################################################# +## Author: Shaun Reed ## +## Legal: All Content (c) 2020 Shaun Reed, all rights reserved ## +## About: An example of a singly linked list ## +## ## +## Contact: shaunrd0@gmail.com | URL: www.shaunreed.com | GitHub: shaunrd0 ## +############################################################################## +## singlelist.cpp +*/ + +#include "singlelist.h" /****************************************************************************** * Constructors, Destructors, Operators diff --git a/plates/linkedlists/singlelist.h b/plates/linkedlists/singlelist.h new file mode 100644 index 0000000..c26614c --- /dev/null +++ b/plates/linkedlists/singlelist.h @@ -0,0 +1,48 @@ +/*############################################################################# +## Author: Shaun Reed ## +## Legal: All Content (c) 2020 Shaun Reed, all rights reserved ## +## About: An example of a singly linked list ## +## ## +## Structure: Remove: Insert: Insert at: Replace: ## +## o-o-o-o-o-o o-o--x-->o-o-o o o o ## +## | /| / \ ## +## o-o~o-o-o-o o-o~o-o-o-o o-o~x~o-o-o ## +## ## +## Contact: shaunrd0@gmail.com | URL: www.shaunreed.com | GitHub: shaunrd0 ## +############################################################################## +## singlelist.cpp +*/ + +#ifndef LINKEDLIST_H +#define LINKEDLIST_H + +#include + +class SingleList{ + public: + SingleList() : head(NULL) {}; + SingleList(const SingleList& rhs); + SingleList& operator=(const SingleList& rhs); + ~SingleList(); + bool insert(int val); + bool insert(int val, int key); + void makeEmpty(); + bool isEmpty() const; + int peek() const; + void print() const; + bool find(int val) const; + + private: + struct Node { + int data; + Node *next; + Node(): data(00), next(NULL) {}; + Node(int val): data(val), next(NULL) {}; + }; + Node *head; + Node* find(int val, Node *start) const; + Node* findPrevious(int val, Node *start) const; + void print(Node *start) const; +}; + +#endif From fb0251c2b6ea24f42edb7480defbd6b441fb783e Mon Sep 17 00:00:00 2001 From: Shaun Reed Date: Wed, 15 Apr 2020 12:08:04 -0400 Subject: [PATCH 4/4] Add remove, replace, update public members to call private members and handle output --- plates/linkedlists/driver.cpp | 48 ++++++--- plates/linkedlists/singlelist.cpp | 173 ++++++++++++++++++++++++------ plates/linkedlists/singlelist.h | 8 +- 3 files changed, 184 insertions(+), 45 deletions(-) diff --git a/plates/linkedlists/driver.cpp b/plates/linkedlists/driver.cpp index d345cab..6dd3771 100644 --- a/plates/linkedlists/driver.cpp +++ b/plates/linkedlists/driver.cpp @@ -12,7 +12,7 @@ #include enum OPS { - EXIT, INSERT, INSERTAT, EMPTY, PEEK, PRINT, FIND + EXIT, INSERT, INSERTAT, EMPTY, PEEK, PRINT, FIND, REMOVE, REPLACE }; int main() @@ -22,12 +22,12 @@ int main() SingleList testList; bool exit = false; int choice = -1; - int val, ins; + int val, key; while (!exit) { std::cout << "##### Singly Linked List Menu #####\n\t0. Exit" << "\n\t1. Insert\n\t2. Insert at\n\t3. Empty list\n\t4. Peek top of list" - << "\n\t5. Print list\n\t6. Find\n"; + << "\n\t5. Print list\n\t6. Find\n\t7. Remove\n\t8. Replace\n"; std::cin >> choice; std::cin.clear(); switch (choice) @@ -44,18 +44,15 @@ int main() break; case INSERTAT: - std::cout << "Enter a value to insert at within our list: "; - std::cin >> ins; - std::cin.clear(); - std::cout << "Enter a value to add to our list: "; + std::cout << "Enter a new value to add to our list: "; std::cin >> val; std::cin.clear(); - if (!testList.insert(val, ins)) { - std::cout << "No changes made, [" << ins << "] was not found in our list\n"; - } - else { + std::cout << "Enter an existing value to insert at within our list: "; + std::cin >> key; + std::cin.clear(); + if (testList.insert(val, key)) { std::cout << "List after inserting [" - << val << "] at [" << ins << "]: \n"; + << val << "] at [" << key << "]: \n"; testList.print(); } break; @@ -65,20 +62,43 @@ int main() break; case PEEK: - std::cout << "[" << testList.peek() << "] is at the top of our list\n"; + testList.peek(); break; case PRINT: testList.print(); + // test2.print(); + // test3.print(); break; case FIND: - std::cout << "Enter a value to search for within our list: "; + std::cout << "Enter an existing value to search for within our list: "; std::cin >> val; std::cin.clear(); testList.find(val); break; + case REMOVE: + std::cout << "Enter an existing value to remove from our list: "; + std::cin >> val; + std::cin.clear(); + testList.remove(val); + break; + + case REPLACE: + std::cout << "Enter a new value to add to our list: "; + std::cin >> val; + std::cin.clear(); + std::cout << "Enter an existing value to replace within our list: "; + std::cin >> key; + std::cin.clear(); + if (testList.replace(val, key)) { + std::cout << "List after replacing [" + << key << "] by [" << val << "]: \n"; + testList.print(); + } + break; + default: std::cout << "Invalid entry...\n"; break; diff --git a/plates/linkedlists/singlelist.cpp b/plates/linkedlists/singlelist.cpp index 6200098..ce47b59 100644 --- a/plates/linkedlists/singlelist.cpp +++ b/plates/linkedlists/singlelist.cpp @@ -56,14 +56,11 @@ SingleList::~SingleList() */ bool SingleList::insert(int val) { - Node *newNode = new Node(val); - if (isEmpty()) - head = newNode; - else { - newNode->next = head; - head = newNode; - } - return true; + bool inserted = insert(val, head); + if (inserted) + std::cout << "[" << val << "] was inserted into the list\n"; + else std::cout << "[" << val << "] could not be inserted into the list\n"; + return inserted; } /** insert at @@ -75,16 +72,44 @@ bool SingleList::insert(int val) */ bool SingleList::insert(int val, int key) { - Node *newNode = new Node(val); - if (isEmpty() || head->data == key) return insert(val); + bool inserted = insert(val, key, head); + if (inserted) + std::cout << "[" << val << "] was inserted into the list\n"; + else std::cout << "[" << val << "] could not be inserted into the list\n"; + return inserted; +} - Node *result = findPrevious(key, head); - if (result == NULL) return false; - else { - newNode->next = result->next; - result->next = newNode; - return true; - } +/** remove + * @brief Removes a value in the list by calling a private member and handling output + * + * @param val Value to be removed from the list + * @return true If the value was removed from the list + * @return false If the value was not removed from the list + */ +bool SingleList::remove(int val) +{ + bool removed = remove(val, head); + if (removed) + std::cout << "[" << val << "] was removed from the list\n"; + else std::cout << "[" << val << "] could not be removed from the list\n"; + return removed; +} + +/** replace + * @brief Replaces a value in the list by calling a private member and handling output + * + * @param val Value to insert into the list + * @param key Value to be replaced within the list + * @return true If the key has been replaced in the list by val + * @return false If the key has not been replaced in the list by val + */ +bool SingleList::replace(int val, int key) +{ + bool replaced = replace(val, key, head); + if (replaced) + std::cout << "[" << key << "] was replaced by [" << val << "] in the list\n"; + else std::cout << "[" << key << "] could not be replaced by [" << val << "] in the list\n"; + return replaced; } /** makeEmpty @@ -93,7 +118,7 @@ bool SingleList::insert(int val, int key) void SingleList::makeEmpty() { Node *temp; - while(head != NULL) { + while(!isEmpty()) { temp = head; head = head->next; delete temp; @@ -116,10 +141,11 @@ bool SingleList::isEmpty() const * * @return int The value held at the Node pointed to by SingleList::head */ -int SingleList::peek() const +void SingleList::peek() const { - if (head == NULL) return -1; - else return head->data; + if (!isEmpty()) + std::cout << "[" << head->data << "] is at the top of our list\n"; + else std::cout << "Nothing to peek, our list is empty...\n"; } /** print @@ -128,7 +154,8 @@ int SingleList::peek() const */ void SingleList::print() const { - print(head); + if(!isEmpty()) print(head); + else std::cout << "Nothing to print, our list is empty...\n"; } /** find @@ -154,6 +181,92 @@ bool SingleList::find(int val) const * Private Member Functions *****************************************************************************/ +/** insert + * @brief Private member to handle inserting value into the list + * + * @param val Value to be inserted + * @param head The head of the list to insert the value into + * @return true If the value was inserted + * @return false If the value could not be inserted + */ +bool SingleList::insert(int val, Node *&head) +{ + Node *newNode = new Node(val); + // If the list is not empty, update next pointer to head node + if (!isEmpty()) newNode->next = head; + // Always set head to our newNode + head = newNode; + return true; +} + +/** insert at + * @brief Private member to handle inserting a value at a key within our list + * + * @param val Value to be inserted + * @param key Key value to search for within the list + * @param head Head node of the list to insert to + * @return true If the value was inserted + * @return false If the value was not inserted + */ +bool SingleList::insert(int val, int key, Node *&head) +{ + Node *newNode = new Node(val); + if (isEmpty()) return false; + // Let insert() handle inserting at the head + else if (head->data == key) return insert(val); + + Node *keyNode = findPrevious(key, head); + // If there was no keyNode found, the key does is not in our list + // Don't insert anything, return false and let caller decide whats next + if (keyNode == NULL) return false; + // Set the newNode to come BEFORE our keyNode + newNode->next = keyNode->next; + keyNode->next = newNode; + return true; +} + +/** remove + * @brief Private member to remove values from the list + * + * @param val Value to be removed + * @param head Head of the list to remove the value from + * @return true If the value has been removed from the list + * @return false If the value has not been removed from the list + */ +bool SingleList::remove(int val, Node *&head) +{ + + if (head == NULL) return false; + else if (head->data == val) { + head = head->next; + return true; + } + + Node *prevNode = findPrevious(val, head); + if (prevNode == NULL) return false; + Node *gtfo = prevNode->next; + prevNode->next = prevNode->next->next; + delete gtfo; + return true; +} + +/** replace + * @brief Private member to replace values within the list + * + * @param val Value to insert into the list + * @param key Value to be replaced within the list + * @param head Head of the list to replace the value + * @return true If the key has been replaced by val within the list + * @return false If the key has not been replaced by val within the list + */ +bool SingleList::replace(int val, int key, Node *&head) +{ + Node *replacee = find(key, head); + if (replacee == NULL) return false; + replacee->data = val; + return true; +} + /** find * @brief Find and return a Node which contains the given value * @@ -162,16 +275,17 @@ bool SingleList::find(int val) const */ SingleList::Node* SingleList::find(int val, Node *start) const { + // If given a NULL list, return NULL + // If given a head which contains the requested value, return the foundNode if (start == NULL || start->data == val) return start; - Node *temp = start; - while (temp->next != NULL) { - temp = temp->next; - if (temp->data == val) break; + Node *foundNode = start; + while (foundNode->next != NULL) { + foundNode = foundNode->next; + if (foundNode->data == val) return foundNode; } - - if (temp->data == val) return temp; - else return NULL; + // If we have not yet returned a foundNode, the key is not in our list + return NULL; } /** findPrevious @@ -209,4 +323,3 @@ void SingleList::print(Node *start) const } std::cout << std::endl; } - diff --git a/plates/linkedlists/singlelist.h b/plates/linkedlists/singlelist.h index c26614c..7d12701 100644 --- a/plates/linkedlists/singlelist.h +++ b/plates/linkedlists/singlelist.h @@ -26,9 +26,11 @@ class SingleList{ ~SingleList(); bool insert(int val); bool insert(int val, int key); + bool remove(int val); + bool replace(int val, int key); void makeEmpty(); bool isEmpty() const; - int peek() const; + void peek() const; void print() const; bool find(int val) const; @@ -40,6 +42,10 @@ class SingleList{ Node(int val): data(val), next(NULL) {}; }; Node *head; + bool insert(int val, Node *&head); + bool insert(int val, int key, Node *&head); + bool remove(int val, Node *&head); + bool replace(int val, int key, Node *&head); Node* find(int val, Node *start) const; Node* findPrevious(int val, Node *start) const; void print(Node *start) const;