Clean up old and new files
This commit is contained in:
		
							parent
							
								
									4eb25a22b1
								
							
						
					
					
						commit
						7ebcb12569
					
				| @ -185,12 +185,13 @@ bool CircleSingleList::isEmpty() const | |||||||
|  * |  * | ||||||
|  * @return int The value held at the Node at the head of our linked list |  * @return int The value held at the Node at the head of our linked list | ||||||
|  */ |  */ | ||||||
| void CircleSingleList::peek() const | int CircleSingleList::peek() const | ||||||
| { | { | ||||||
|   // If there is only one data member, a circular list node will point to itself
 |   // If there is only one data member, a circular list node will point to itself
 | ||||||
|   if (!isEmpty()) |   if (!isEmpty()) | ||||||
|     std::cout << "[" << tail->next->data << "] is at the top of our list\n"; |     std::cout << "[" << tail->next->data << "] is at the top of our list\n"; | ||||||
|   else std::cout << "Nothing to peek, our list is empty...\n"; |   else std::cout << "Nothing to peek, our list is empty...\n"; | ||||||
|  |   return tail->next->data; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /** print
 | /** print
 | ||||||
|  | |||||||
| @ -13,7 +13,7 @@ | |||||||
| 
 | 
 | ||||||
| #include <iostream> | #include <iostream> | ||||||
| 
 | 
 | ||||||
| class CircleSingleList{ | class CircleSingleList { | ||||||
|   public: |   public: | ||||||
|     CircleSingleList() : tail(NULL) {}; |     CircleSingleList() : tail(NULL) {}; | ||||||
|     CircleSingleList(const CircleSingleList& rhs); |     CircleSingleList(const CircleSingleList& rhs); | ||||||
| @ -25,7 +25,7 @@ class CircleSingleList{ | |||||||
|     bool replace(int val, int key); |     bool replace(int val, int key); | ||||||
|     void makeEmpty(); |     void makeEmpty(); | ||||||
|     bool isEmpty() const; |     bool isEmpty() const; | ||||||
|     void peek() const; |     int peek() const; | ||||||
|     void print() const; |     void print() const; | ||||||
|     bool find(int val) const; |     bool find(int val) const; | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,63 +0,0 @@ | |||||||
| ############################################################################### |  | ||||||
| ## Author: Shaun reserved                                                    ## |  | ||||||
| ## Legal: All Content (c) 2020 Shaun Reed, all rights reserved               ## |  | ||||||
| ##                                                                           ## |  | ||||||
| ## Contact: shaunrd0@gmail.com	| URL: www.shaunreed.com | GitHub: shaunrd0  ## |  | ||||||
| ############################################################################## |  | ||||||
| 
 |  | ||||||
| # Define the version of CMake |  | ||||||
| cmake_minimum_required(VERSION 3.10) |  | ||||||
| # Name and version of our project |  | ||||||
| project(DataStruct VERSION 0.1) |  | ||||||
| # Specify the C++ standard |  | ||||||
| set(CMAKE_CXX_STANDARD 11) |  | ||||||
| set(CMAKE_CXX_STANDARD_REQUIRED True) |  | ||||||
| 
 |  | ||||||
| # Create path variables relative to root directory (CMAKE_SOURCE_DIR) |  | ||||||
| set(APPS_DIR ./apps) |  | ||||||
| set(SRC_DIR ./src) |  | ||||||
| set(INCLUDE_DIR ./include) |  | ||||||
| set(DRIVER_SRC ${APPS_DIR}/driver.cpp) |  | ||||||
| set(LIB_DS_SRC ${SRC_DIR}/lib-datastruct.cpp) |  | ||||||
| 
 |  | ||||||
| add_library(lib-ds ${LIB_DS_SRC}) |  | ||||||
| 
 |  | ||||||
| add_executable(Driver ${DRIVER_SRC}) |  | ||||||
| 
 |  | ||||||
| target_link_libraries(Driver PUBLIC lib-ds) |  | ||||||
| 
 |  | ||||||
| target_include_directories(lib-ds PUBLIC ${INCLUDE_DIR}) |  | ||||||
| 
 |  | ||||||
| # configure_file(${INCLUDE_DIR}/lib-datastruct.h.in ${CMAKE_BINARY_DIR}/generated/lib-datastruct.h) |  | ||||||
| # include_directories( ${CMAKE_BINARY_DIR}/generated/ ) |  | ||||||
| 
 |  | ||||||
| # # Location of our header files |  | ||||||
| # # include_directories(./include) |  | ||||||
| # include_directories(${PROJECT_BINARY_DIR}) |  | ||||||
| # include_directories( ${CMAKE_BINARY_DIR}/generated/ ) |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| # # Additional directories to expect a CMakeLists.txt |  | ||||||
| # # add_subdirectory(src) |  | ||||||
| # # add_subdirectory(apps) |  | ||||||
| 
 |  | ||||||
| # # Configure includes to consider cmake variables |  | ||||||
| # configure_file(${INCLUDE_DIR}/lib-datastruct.h.in ${CMAKE_BINARY_DIR}/generated/lib-datastruct.h) |  | ||||||
| 
 |  | ||||||
| # # /apps/CMakeLists.txt |  | ||||||
| # # Create a variable to reference any sources to add |  | ||||||
| # set(LIB_DS_SRC ${SRC_DIR}/lib-datastruct.cpp) |  | ||||||
| # # Create our library |  | ||||||
| # add_library(lib-datastruct ${LIB_DS_SRC}) |  | ||||||
| # # Point the library to directories containing any includes it might need |  | ||||||
| # target_include_directories(lib-datastruct PUBLIC "${INCLUDE_DIR}") |  | ||||||
| 
 |  | ||||||
| # # /src/CMakeLists.txt |  | ||||||
| # # Create a variable to reference our driver program source code |  | ||||||
| # set(DRIVER_SRC ${APPS_DIR}/driver.cpp) |  | ||||||
| # # Add the executable to the build list |  | ||||||
| # add_executable(Driver ${DRIVER_SRC}) |  | ||||||
| # # Link custom libraries to our executable |  | ||||||
| # target_link_libraries(Driver lib-datastruct) |  | ||||||
| 
 |  | ||||||
| # # target_include_directories(Driver PUBLIC "${INCLUDE_DIR}") |  | ||||||
| @ -1,15 +0,0 @@ | |||||||
| ############################################################################### |  | ||||||
| ## Author: Shaun reserved                                                    ## |  | ||||||
| ## Legal: All Content (c) 2020 Shaun Reed, all rights reserved               ## |  | ||||||
| ##                                                                           ## |  | ||||||
| ## Contact: shaunrd0@gmail.com	| URL: www.shaunreed.com | GitHub: shaunrd0  ## |  | ||||||
| ############################################################################## |  | ||||||
| 
 |  | ||||||
| # # Create a variable to reference our source code |  | ||||||
| # set(DRIVER_SRC driver.cpp) |  | ||||||
| 
 |  | ||||||
| # # Add the executable to the build list |  | ||||||
| # add_executable(driver ${DRIVER_SRC}) |  | ||||||
| 
 |  | ||||||
| # # Link custom libraries to our executable |  | ||||||
| # target_link_libraries(driver lib-datastruct) |  | ||||||
| @ -1,170 +0,0 @@ | |||||||
| #include <lib-datastruct.h> |  | ||||||
| #include <iostream> |  | ||||||
| 
 |  | ||||||
| // StackArray menu
 |  | ||||||
| void Stack(); |  | ||||||
| 
 |  | ||||||
| void List(); |  | ||||||
| 
 |  | ||||||
| // Main menu
 |  | ||||||
| int main () |  | ||||||
| { |  | ||||||
|   // std::cout << "Running driver program version " << DS_VERSION;
 |  | ||||||
|   enum OPS { |  | ||||||
|     EXIT, LISTS, STACKS, QUEUES |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   bool exit = false; |  | ||||||
|   int choice; |  | ||||||
|   while (!exit) { |  | ||||||
|     std::cout << "\n##### Main Menu #####\n" |  | ||||||
|       << "Enter a choice below...\n\t0. Exit" |  | ||||||
|       << "\n\t1. Lists\n\t2. Stacks\n\t3. Queues\n"; |  | ||||||
|     std::cin >> choice; |  | ||||||
|     std::cin.clear(); |  | ||||||
| 
 |  | ||||||
|     switch (choice) { |  | ||||||
|     case EXIT: // 0
 |  | ||||||
|       exit = true; |  | ||||||
|       break; |  | ||||||
|      |  | ||||||
|     case LISTS: // 1
 |  | ||||||
|       List(); |  | ||||||
|       break; |  | ||||||
|      |  | ||||||
|     case STACKS: // 2
 |  | ||||||
|       Stack(); |  | ||||||
|       break; |  | ||||||
|      |  | ||||||
|     case QUEUES: // 3
 |  | ||||||
|       break; |  | ||||||
| 
 |  | ||||||
|     default: |  | ||||||
|       std::cout << "Invalid option selected\n"; |  | ||||||
|       break; |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   return 0; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| // LinkedList menu
 |  | ||||||
| void List() |  | ||||||
| { |  | ||||||
|   enum LIST_OPS { |  | ||||||
|     EXIT, APPEND, PUSH, DEQUEUE, POP, DISPLAY |  | ||||||
|   }; |  | ||||||
|   bool exit = false; |  | ||||||
|   int choice; |  | ||||||
|   char val; |  | ||||||
|   LinkedList list; |  | ||||||
| 
 |  | ||||||
|   while(!exit) { |  | ||||||
|     std::cout << "\n##### LinkedList Menu #####\n" |  | ||||||
|        << "Enter a choice below...\n\t0. Exit" |  | ||||||
|        << "\n\t1. Append\n\t2. Push\n\t3. Dequeue\n\t4. Pop" |  | ||||||
|        << "\n\t5. Display\n\t6. Find\n\t7. Remove\n"; |  | ||||||
|     std::cin >> choice; |  | ||||||
|     std::cin.clear(); |  | ||||||
|     switch(choice) { |  | ||||||
|       case EXIT: // 0
 |  | ||||||
|         exit = true; |  | ||||||
|         break; |  | ||||||
| 
 |  | ||||||
|       case APPEND: // 1
 |  | ||||||
|         std::cout << "Enter a character to append to our list: "; |  | ||||||
|         std::cin >> val; |  | ||||||
|         std::cin.clear(); |  | ||||||
|         list.Append(val); |  | ||||||
|         break; |  | ||||||
| 
 |  | ||||||
|       case PUSH: // 2
 |  | ||||||
|         std::cout << "Enter a character to push to our list: "; |  | ||||||
|         std::cin >> val; |  | ||||||
|         std::cin.clear(); |  | ||||||
|         list.Push(val); |  | ||||||
|         break; |  | ||||||
|        |  | ||||||
|       case DEQUEUE: // 3
 |  | ||||||
|         std::cout << "Enter a value to remove from the list: "; |  | ||||||
|         std::cin >> val; |  | ||||||
|         std::cin.clear(); |  | ||||||
|         list.Remove(val); |  | ||||||
|         break; |  | ||||||
| 
 |  | ||||||
|       case POP: // 4
 |  | ||||||
|         // list.Pop();
 |  | ||||||
|         list.Append('a'); |  | ||||||
|         Node *tem = list.Find('a'); |  | ||||||
|         list.Remove('a'); |  | ||||||
|         if (tem != NULL) { |  | ||||||
|           std::cout << "Found [" << tem->data << "] within the list\n"; |  | ||||||
|         } |  | ||||||
|         delete tem; |  | ||||||
|         break; |  | ||||||
| 
 |  | ||||||
|       case DISPLAY: // 5
 |  | ||||||
|         list.Display(); |  | ||||||
|         break; |  | ||||||
| 
 |  | ||||||
|       default: |  | ||||||
|         std::cout << "Invalid option selected\n"; |  | ||||||
|         break; |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   return; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| // StackArray menu
 |  | ||||||
| void Stack() |  | ||||||
| { |  | ||||||
|   enum STACK_OPS { |  | ||||||
|     EXIT, PUSH, POP, TOP, DISPLAY |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   StackArray stack; |  | ||||||
|   bool exit = false; |  | ||||||
|   int choice; |  | ||||||
|   while (!exit) { |  | ||||||
|     std::cout << "\n##### StackArray Menu #####\n" |  | ||||||
|       << "Enter a choice below...\n\t0. Exit" |  | ||||||
|       << "\n\t1. Push\n\t2. Pop\n\t3. Top\n\t4. Display\n"; |  | ||||||
|     std::cin >> choice; |  | ||||||
|     std::cin.clear(); |  | ||||||
| 
 |  | ||||||
|     switch (choice) { |  | ||||||
|     case EXIT: // 0
 |  | ||||||
|       exit = true; |  | ||||||
|       break; |  | ||||||
| 
 |  | ||||||
|     case PUSH: // 1
 |  | ||||||
|       char val; |  | ||||||
|       std::cout << "Enter a character to push to our stack: "; |  | ||||||
|       std::cin >> val; |  | ||||||
|       std::cin.clear(); |  | ||||||
|       stack.Push(val); |  | ||||||
|       break; |  | ||||||
|      |  | ||||||
| 
 |  | ||||||
|     case POP: // 2
 |  | ||||||
|       std::cout << "[" << stack.Pop() << "] has been removed from our stack\n"; |  | ||||||
|       break; |  | ||||||
|      |  | ||||||
| 
 |  | ||||||
|     case TOP: // 3
 |  | ||||||
|       std::cout << "[" << stack.Top() << "] is at the top of our stack\n"; |  | ||||||
|       break; |  | ||||||
|      |  | ||||||
| 
 |  | ||||||
|     case DISPLAY: // 4
 |  | ||||||
|       stack.Display(); |  | ||||||
|       break; |  | ||||||
|      |  | ||||||
|     default: |  | ||||||
|       std::cout << "Invalid option selected\n"; |  | ||||||
|       break; |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
|    |  | ||||||
| } |  | ||||||
| @ -1,48 +0,0 @@ | |||||||
| #ifndef LDS_H |  | ||||||
| #define LDS_H |  | ||||||
| 
 |  | ||||||
| #include <iostream> |  | ||||||
| 
 |  | ||||||
| class Node { |  | ||||||
|   public: |  | ||||||
|     Node() : next(NULL) {}; |  | ||||||
|     Node(char val) : data(val), next(NULL) {}; |  | ||||||
|     char data; |  | ||||||
|     Node *next; |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| // Linked list
 |  | ||||||
| 
 |  | ||||||
| class LinkedList { |  | ||||||
| 
 |  | ||||||
|   public: |  | ||||||
|     LinkedList() : head(NULL), tail(NULL) {}; |  | ||||||
|     void Append(char val); |  | ||||||
|     void Push(char val); |  | ||||||
|     void Remove(char val); |  | ||||||
|     void Replace(char remove, char replace); |  | ||||||
|     void Display() const; |  | ||||||
|     bool isEmpty() const; |  | ||||||
|     Node* Find(char val) const; |  | ||||||
|   private: |  | ||||||
|     Node *head, *tail; |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| // Array based stack
 |  | ||||||
| 
 |  | ||||||
| class StackArray { |  | ||||||
|   public: |  | ||||||
|     StackArray() : top(EMPTY) {}; |  | ||||||
|     void Push(char val); |  | ||||||
|     char Pop(); |  | ||||||
|     char Top() const; |  | ||||||
|     void Display() const; |  | ||||||
|     bool isEmpty() const; |  | ||||||
| 
 |  | ||||||
|   private: |  | ||||||
|     enum { EMPTY=-1, MAX=10 }; |  | ||||||
|     Node stack[MAX]; |  | ||||||
|     int top; |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| #endif |  | ||||||
| @ -1,8 +0,0 @@ | |||||||
| // #ifndef LDS_H
 |  | ||||||
| // #define LDS_H
 |  | ||||||
| 
 |  | ||||||
| #define DS_VERSION_MINOR @DataStruct_VERSION_MINOR@ |  | ||||||
| #define DS_VERSION_MAJOR @DataStruct_VERSION_MAJOR@ |  | ||||||
| #define DS_VERSION @DataStruct_VERSION@ |  | ||||||
| 
 |  | ||||||
| // #endif
 |  | ||||||
| @ -1,12 +0,0 @@ | |||||||
| ############################################################################### |  | ||||||
| ## Author: Shaun reserved                                                    ## |  | ||||||
| ## Legal: All Content (c) 2020 Shaun Reed, all rights reserved               ## |  | ||||||
| ##                                                                           ## |  | ||||||
| ## Contact: shaunrd0@gmail.com	| URL: www.shaunreed.com | GitHub: shaunrd0  ## |  | ||||||
| ############################################################################## |  | ||||||
| 
 |  | ||||||
| # # Create a variable to reference any sources to add |  | ||||||
| # set(LIB_DS_SRC lib-datastruct.cpp) |  | ||||||
| 
 |  | ||||||
| # # Create our library |  | ||||||
| # add_library(lib-datastruct ${LIB_DS_SRC}) |  | ||||||
| @ -1,172 +0,0 @@ | |||||||
| #include <lib-datastruct.h> |  | ||||||
| 
 |  | ||||||
| // LinkedList
 |  | ||||||
| 
 |  | ||||||
| void LinkedList::Append(char val) |  | ||||||
| { |  | ||||||
|   Node *temp = new Node(val); |  | ||||||
|    |  | ||||||
|   if (isEmpty()) { |  | ||||||
|     this->tail = this->head = temp; |  | ||||||
|     // head->next = tail;
 |  | ||||||
|     return; |  | ||||||
|   } |  | ||||||
|   else { |  | ||||||
|     tail->next = temp; |  | ||||||
|     tail = temp; |  | ||||||
|     return; |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void LinkedList::Push(char val) |  | ||||||
| { |  | ||||||
|   Node *temp = new Node(val); |  | ||||||
| 
 |  | ||||||
|   if (isEmpty()) |  | ||||||
|   { |  | ||||||
|     this->head = this->tail = temp; |  | ||||||
|     return; |  | ||||||
|   } |  | ||||||
|   else { |  | ||||||
|     temp->next = head; |  | ||||||
|     this->head = temp; |  | ||||||
|     return; |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void LinkedList::Remove(char val) |  | ||||||
| { |  | ||||||
|   Node *foundNode = new Node; |  | ||||||
|    |  | ||||||
|   if (isEmpty()) { |  | ||||||
|     // if list is empty
 |  | ||||||
|     std::cout << "Error: List is empty\n"; |  | ||||||
|     return; |  | ||||||
|   } |  | ||||||
|   else if (this->head->data == val) { |  | ||||||
|     // check the head node, return if found val
 |  | ||||||
|     foundNode = this->head; |  | ||||||
|     std::cout << "[" << foundNode->data << "] has been removed from our list\n"; |  | ||||||
|     this->head = foundNode->next; |  | ||||||
|     delete foundNode; |  | ||||||
|     // Does this set head to NULL?
 |  | ||||||
|     // this->head = NULL;
 |  | ||||||
|     return; |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   Node *temp = head; |  | ||||||
|   while (temp->next->data != val) { |  | ||||||
|     temp = temp->next; |  | ||||||
|     if (temp->next == NULL) { |  | ||||||
|       std::cout << "Value [" << val << "] not found in our list\n"; |  | ||||||
|       return; |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
|   foundNode = temp->next; |  | ||||||
|   // If we made it our of the loop, we found val at the next node
 |  | ||||||
|   temp->next = foundNode->next; |  | ||||||
|   std::cout << "[" << foundNode->data << "] has been removed from our list\n"; |  | ||||||
|   delete foundNode; |  | ||||||
|   return;   |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void LinkedList::Replace(char remove, char replace) |  | ||||||
| { |  | ||||||
|   return; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| Node* LinkedList::Find(char val) const |  | ||||||
| { |  | ||||||
|   Node *foundNode(NULL); |  | ||||||
|   Node *temp = head; |  | ||||||
|    |  | ||||||
|   if(isEmpty())  { |  | ||||||
|     std::cout << "Error: The list is empty\n"; |  | ||||||
|     return foundNode; |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   bool found = false; |  | ||||||
| 
 |  | ||||||
|   while (!found && temp->next != NULL) { |  | ||||||
|     if(temp->next->data == val) { |  | ||||||
|       found = true; |  | ||||||
|       foundNode = temp->next; |  | ||||||
|       std::cout << "[" << foundNode->data << "] has been found in our list\n"; |  | ||||||
|       // temp->next = foundNode->next;
 |  | ||||||
|       // delete foundNode;
 |  | ||||||
|     } |  | ||||||
|     temp = temp->next; |  | ||||||
|   } |  | ||||||
|   return foundNode; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void LinkedList::Display() const |  | ||||||
| { |  | ||||||
|   Node *temp = head; |  | ||||||
|   while (temp != NULL) { |  | ||||||
|     std::cout << "[" << temp->data << "] | "; |  | ||||||
|     temp = temp->next; |  | ||||||
|   } |  | ||||||
|   return; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| bool LinkedList::isEmpty() const |  | ||||||
| { |  | ||||||
|   return this->head == NULL; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| // StackArray
 |  | ||||||
| 
 |  | ||||||
| void StackArray::Push(char val) |  | ||||||
| { |  | ||||||
|    |  | ||||||
|   if (top < MAX && !isEmpty()) { |  | ||||||
|     this->stack[++top].data = val; |  | ||||||
|   } |  | ||||||
|   else if (isEmpty()) { |  | ||||||
|     this->stack[++top].data = val; |  | ||||||
|   } |  | ||||||
|   else { |  | ||||||
|     std::cout << "Error: stack is full!\n"; |  | ||||||
|   } |  | ||||||
|   return; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| char StackArray::Pop()  |  | ||||||
| { |  | ||||||
|    |  | ||||||
|   if (!isEmpty()) { |  | ||||||
|     char temp = this->Top(); |  | ||||||
|     this->top -= 1; |  | ||||||
|     return temp; |  | ||||||
|   } |  | ||||||
|   return '\0'; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| char StackArray::Top() const |  | ||||||
| { |  | ||||||
|   return this->stack[top].data; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void StackArray::Display() const |  | ||||||
| { |  | ||||||
|   if (isEmpty()) { |  | ||||||
|     std::cout << "Error: Stack is empty\n"; |  | ||||||
|     return; |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   int tempTop = this->top; |  | ||||||
|   while (tempTop >= 0) { |  | ||||||
|     std::cout << "Value at stack [" << tempTop << "]: "  |  | ||||||
|       << this->stack[tempTop].data << std::endl; |  | ||||||
|     tempTop--; |  | ||||||
|   } |  | ||||||
|    |  | ||||||
|   return; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| bool StackArray::isEmpty() const |  | ||||||
| { |  | ||||||
|   return this->top <= EMPTY; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| @ -1,21 +0,0 @@ | |||||||
| 
 |  | ||||||
| ############################################################################### |  | ||||||
| ## Author: Shaun Reed                                                        ## |  | ||||||
| ## Legal: All Content (c) 2019 Shaun Reed, all rights reserved               ## |  | ||||||
| ##                                                                           ## |  | ||||||
| ## Contact: shaunrd0@gmail.com  | URL: www.shaunreed.com | GitHub: shaunrd0  ## |  | ||||||
| ############################################################################## |  | ||||||
| 
 |  | ||||||
| # Define the version of CMake |  | ||||||
| cmake_minimum_required(VERSION 2.8) |  | ||||||
| 
 |  | ||||||
| # Define the your project name |  | ||||||
| project(cpp-launcher) |  | ||||||
| 
 |  | ||||||
| # Include any directories the compiler may need |  | ||||||
| include_directories(./include) |  | ||||||
| 
 |  | ||||||
| # Point CMake to look for more CMakeLists within the following directories |  | ||||||
| add_subdirectory(src) |  | ||||||
| add_subdirectory(apps) |  | ||||||
| 
 |  | ||||||
| @ -1,16 +0,0 @@ | |||||||
| ############################################################################### |  | ||||||
| ## Author: Shaun Reed                                                        ## |  | ||||||
| ## Legal: All Content (c) 2019 Shaun Reed, all rights reserved               ## |  | ||||||
| ##                                                                           ## |  | ||||||
| ## Contact: shaunrd0@gmail.com  | URL: www.shaunreed.com | GitHub: shaunrd0  ## |  | ||||||
| ############################################################################## |  | ||||||
| 
 |  | ||||||
| # Create a reference / variable to refer to our source code |  | ||||||
| set(LAUNCHER_SRC launcher.cpp) |  | ||||||
| 
 |  | ||||||
| # Add our executable, naming it and linking it to our source code |  | ||||||
| add_executable(launcher ${LAUNCHER_SRC}) |  | ||||||
| 
 |  | ||||||
| # Link to our custom library, defined in c-cmake/src/ |  | ||||||
| target_link_libraries(launcher lib-launcher) |  | ||||||
| 
 |  | ||||||
| @ -1,76 +0,0 @@ | |||||||
| /*#############################################################################
 |  | ||||||
| ## Author: Shaun Reed                                                        ## |  | ||||||
| ## Legal: All Content (c) 2019 Shaun Reed, all rights reserved               ## |  | ||||||
| ##                                                                           ## |  | ||||||
| ## Contact: shaunrd0@gmail.com  | URL: www.shaunreed.com | GitHub: shaunrd0  ## |  | ||||||
| ############################################################################## |  | ||||||
| ## launcher.cpp |  | ||||||
| */ |  | ||||||
| 
 |  | ||||||
| #include <iostream> |  | ||||||
| #include <lib-launcher.hpp> |  | ||||||
| 
 |  | ||||||
| int main () { |  | ||||||
|   // Because the launcher is this executable.. (main() will become our exe)
 |  | ||||||
|   // Initialize the user choice to launcher problem at runtime
 |  | ||||||
|   int pChoice = LAUNCH; |  | ||||||
| 
 |  | ||||||
|   // Cast the integer pChoice into an assignment for our Problem enum
 |  | ||||||
|   // No failsafes needed here since we know pChoice = LAUNCH
 |  | ||||||
|   Problem pSelect = static_cast<Problem>(pChoice); |  | ||||||
| 
 |  | ||||||
|   do |  | ||||||
|   { |  | ||||||
|     printf("\nWelcome to the cpp launcher!\n" |  | ||||||
|            "Input the problem number to run the example.\n"); |  | ||||||
| 
 |  | ||||||
|     //ProblemList(); List and explain problem selection
 |  | ||||||
|     //ProblemSelect(); Select problem, handle errors, return result to &pSelect
 |  | ||||||
|      |  | ||||||
|     std::cin >> pChoice; |  | ||||||
|      |  | ||||||
|     if(pChoice == LAUNCH) |  | ||||||
|     { // Ensure that pSelect = LAUNCH and restart
 |  | ||||||
|     pSelect = static_cast<Problem>(pChoice); |  | ||||||
|     std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); |  | ||||||
|     RunProblem(pSelect); |  | ||||||
|     continue; |  | ||||||
|     } |  | ||||||
|     else if ( pChoice > QTY ) |  | ||||||
|     { // If we have entered a value too large, restart
 |  | ||||||
|     std::printf("\nThe value you entered is too large." |  | ||||||
|     "\nPlease enter a value below %d\n", QTY); |  | ||||||
|     pSelect = Problem::Launch; // Set our launcher to restart and continue
 |  | ||||||
|     continue; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     if (!std::cin )  |  | ||||||
|     { // Check for cin error state
 |  | ||||||
|     std::cin.clear(); |  | ||||||
|     std::cin.ignore(); |  | ||||||
|     pChoice = ERROR; |  | ||||||
|     } |  | ||||||
|     // One last input check for other error values
 |  | ||||||
|     if (pChoice < EXIT) pChoice = ERROR; |  | ||||||
| 
 |  | ||||||
|     // Cast the integer pChoice into an assignment for our Problem enum    
 |  | ||||||
|     pSelect = static_cast<Problem>(pChoice); |  | ||||||
| 
 |  | ||||||
|     /*
 |  | ||||||
|     * We should expect a clear input buffer at this point |  | ||||||
|     * Clear cin up to next endline to prepare for the next input |  | ||||||
|     * Depends on include <limits> for numeric_limits<streamsize> |  | ||||||
|     */ |  | ||||||
|     std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); |  | ||||||
| 
 |  | ||||||
|     // Run the problem, print exit, or print error.
 |  | ||||||
|     RunProblem(pSelect);  |  | ||||||
| 
 |  | ||||||
|   // Run loop until invalid or exit input recieved
 |  | ||||||
|   } while (pChoice > EXIT || pChoice == LAUNCH);  |  | ||||||
|   // Exit the launcher if the selection is in range
 |  | ||||||
|   // Exit if pSelect is set to ERROR state value
 |  | ||||||
| 
 |  | ||||||
|   return 0; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| @ -1,37 +0,0 @@ | |||||||
| /*#############################################################################
 |  | ||||||
| ## Author: Shaun Reed                                                        ## |  | ||||||
| ## Legal: All Content (c) 2019 Shaun Reed, all rights reserved               ## |  | ||||||
| ##                                                                           ## |  | ||||||
| ## Contact: shaunrd0@gmail.com  | URL: www.shaunreed.com | GitHub: shaunrd0  ## |  | ||||||
| ############################################################################## |  | ||||||
| ## lib-launcher.hpp |  | ||||||
| */ |  | ||||||
| 
 |  | ||||||
| #include <iostream> |  | ||||||
| #include <limits> |  | ||||||
| 
 |  | ||||||
| // Define our constants
 |  | ||||||
| // These are used for ranges within our control loops
 |  | ||||||
| const int QTY = 5; |  | ||||||
| const int EXIT = 0; |  | ||||||
| const int ERROR = -1; |  | ||||||
| const int LAUNCH = 99; |  | ||||||
| 
 |  | ||||||
| /* An enumeration for use with RunProblem() when selecting which problem to run
 |  | ||||||
|  * This is meant to be expanded as needed. |  | ||||||
|  * Be sure to add a corresponding case within RunProblem() |  | ||||||
|  * |  | ||||||
|  * @Launcher (LAUNCH 99) the value used for the launcher as a problem number |  | ||||||
|  * @Exit (EXIT 0) is the normal exit index |  | ||||||
|  * @Error (ERROR -1) is considered an error |  | ||||||
|  */ |  | ||||||
| enum class Problem  |  | ||||||
| { Launch = 99, Error = -1, Exit, One, Two, Three, Four, Five }; |  | ||||||
| 
 |  | ||||||
| /* This function allows for selection of the next problem to run.
 |  | ||||||
|  * |  | ||||||
|  * @param pSelect - The index to use within our enumeration. |  | ||||||
|  *                  Allows for easy integer to problem selection. |  | ||||||
|  */ |  | ||||||
| void RunProblem(Problem pSelect); |  | ||||||
| 
 |  | ||||||
| @ -1,13 +0,0 @@ | |||||||
| ############################################################################### |  | ||||||
| ## Author: Shaun Reed                                                        ## |  | ||||||
| ## Legal: All Content (c) 2019 Shaun Reed, all rights reserved               ## |  | ||||||
| ##                                                                           ## |  | ||||||
| ## Contact: shaunrd0@gmail.com  | URL: www.shaunreed.com | GitHub: shaunrd0  ## |  | ||||||
| ############################################################################## |  | ||||||
| 
 |  | ||||||
| # Create any links we might need |  | ||||||
| set(LIB_LAUNCHER_SRC lib-launcher.cpp) |  | ||||||
| 
 |  | ||||||
| # Define our library within CMake and link to the source code |  | ||||||
| add_library(lib-launcher ${LIB_LAUNCHER_SRC}) |  | ||||||
| 
 |  | ||||||
| @ -1,80 +0,0 @@ | |||||||
| /*#############################################################################
 |  | ||||||
| ## Author: Shaun Reed                                                        ## |  | ||||||
| ## Legal: All Content (c) 2019 Shaun Reed, all rights reserved               ## |  | ||||||
| ##                                                                           ## |  | ||||||
| ## Contact: shaunrd0@gmail.com  | URL: www.shaunreed.com | GitHub: shaunrd0  ## |  | ||||||
| ############################################################################## |  | ||||||
| ## lib-launcher.cpp |  | ||||||
| */ |  | ||||||
| 
 |  | ||||||
| #include <lib-launcher.hpp> |  | ||||||
| 
 |  | ||||||
| /* This function allows for selection of the next problem to run.
 |  | ||||||
|  * |  | ||||||
|  * @param pSelect - The index to use within our enumeration. |  | ||||||
|  *                  Allows for easy integer to problem selection. |  | ||||||
|  */ |  | ||||||
| void RunProblem(Problem pSelect) {  |  | ||||||
| 
 |  | ||||||
|   switch (pSelect) { |  | ||||||
|      |  | ||||||
|     case Problem::One:   |  | ||||||
|       std::printf("\nYou are on problem 1!\n" |  | ||||||
|       "Press enter to continue."); |  | ||||||
|       std::cin.ignore(); |  | ||||||
|       break; |  | ||||||
|      |  | ||||||
|     case Problem::Two: |  | ||||||
|       std::printf("\nYou are on problem 2!\n" |  | ||||||
|       "Press enter to continue."); |  | ||||||
|       std::cin.ignore(); |  | ||||||
|       break; |  | ||||||
|      |  | ||||||
|     case Problem::Three: |  | ||||||
|       std::printf("\nYou are on problem 3!\n" |  | ||||||
|       "Press enter to continue."); |  | ||||||
|       std::cin.ignore(); |  | ||||||
|       break; |  | ||||||
|      |  | ||||||
|     case Problem::Four: |  | ||||||
|       std::printf("\nYou are on problem 4!\n" |  | ||||||
|       "Press enter to continue."); |  | ||||||
|       std::cin.ignore(); |  | ||||||
|       break; |  | ||||||
|      |  | ||||||
|     case Problem::Five: |  | ||||||
|       std::printf("\nYou are on problem 5!\n" |  | ||||||
|       "Press enter to continue."); |  | ||||||
|       std::cin.get(); |  | ||||||
|       break; |  | ||||||
| 
 |  | ||||||
|     case Problem::Exit: |  | ||||||
|       std::printf("\nYou are on problem 0! This is a safe exit.\n" |  | ||||||
|       "Press enter to continue."); |  | ||||||
|       std::cin.ignore(); |  | ||||||
|       break; |  | ||||||
| 
 |  | ||||||
|     case Problem::Error: |  | ||||||
|       std::printf("\nYou are on problem -1! This is considered and error.\n" |  | ||||||
|       "Press enter to exit."); |  | ||||||
|       std::cin.ignore(); |  | ||||||
|       break; |  | ||||||
| 
 |  | ||||||
|     case Problem::Launch: |  | ||||||
|       // Do nothing, break and let main() restart the launcher
 |  | ||||||
|       std::printf("\nRestarting the launcher...\n" |  | ||||||
|       "Press enter to continue."); |  | ||||||
|       std::cin.ignore(); |  | ||||||
|       break; |  | ||||||
| 
 |  | ||||||
|     default: |  | ||||||
|       std::printf("\nYou have entered an invalid value." |  | ||||||
|       "\nPress Enter to try again."); |  | ||||||
|       //ProblemList();
 |  | ||||||
|       break; |  | ||||||
| 
 |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   return; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| @ -10,11 +10,12 @@ | |||||||
| 
 | 
 | ||||||
| #include "singlelist.h" | #include "singlelist.h" | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
| /******************************************************************************
 | /******************************************************************************
 | ||||||
|  * Constructors, Destructors, Operators |  * Constructors, Destructors, Operators | ||||||
|  *****************************************************************************/ |  *****************************************************************************/ | ||||||
| 
 | 
 | ||||||
| /**
 | /** copy constructor
 | ||||||
|  * @brief Construct a new SingleList::SingleList object from an existing one |  * @brief Construct a new SingleList::SingleList object from an existing one | ||||||
|  * |  * | ||||||
|  * @param rhs SingleList object |  * @param rhs SingleList object | ||||||
| @ -51,7 +52,7 @@ SingleList SingleList::operator=(SingleList rhs) | |||||||
|   return *this; |   return *this; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /**
 | /** destructor
 | ||||||
|  * @brief Destroy the SingleList::SingleList object |  * @brief Destroy the SingleList::SingleList object | ||||||
|  */ |  */ | ||||||
| SingleList::~SingleList() | SingleList::~SingleList() | ||||||
| @ -59,6 +60,7 @@ SingleList::~SingleList() | |||||||
|   makeEmpty(); |   makeEmpty(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
| /******************************************************************************
 | /******************************************************************************
 | ||||||
|  * Public Member Functions |  * Public Member Functions | ||||||
|  *****************************************************************************/ |  *****************************************************************************/ | ||||||
| @ -161,11 +163,12 @@ bool SingleList::isEmpty() const | |||||||
|  * |  * | ||||||
|  * @return int The value held at the Node pointed to by SingleList::head |  * @return int The value held at the Node pointed to by SingleList::head | ||||||
|  */ |  */ | ||||||
| void SingleList::peek() const | int SingleList::peek() const | ||||||
| { | { | ||||||
|   if (!isEmpty()) |   if (!isEmpty()) | ||||||
|     std::cout << "[" << head->data << "] is at the top of our list\n"; |     std::cout << "[" << head->data << "] is at the top of our list\n"; | ||||||
|   else std::cout << "Nothing to peek, our list is empty...\n"; |   else std::cout << "Nothing to peek, our list is empty...\n"; | ||||||
|  |   return head->data; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /** print
 | /** print
 | ||||||
| @ -197,6 +200,7 @@ bool SingleList::find(int val) const | |||||||
|   return true; |   return true; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
| /******************************************************************************
 | /******************************************************************************
 | ||||||
|  * Private Member Functions |  * Private Member Functions | ||||||
|  *****************************************************************************/ |  *****************************************************************************/ | ||||||
|  | |||||||
| @ -13,8 +13,8 @@ | |||||||
| ## singlelist.h | ## singlelist.h | ||||||
| */ | */ | ||||||
| 
 | 
 | ||||||
| #ifndef LINKEDLIST_H | #ifndef SINGLELIST_H | ||||||
| #define LINKEDLIST_H | #define SINGLELIST_H | ||||||
| 
 | 
 | ||||||
| #include <iostream> | #include <iostream> | ||||||
| 
 | 
 | ||||||
| @ -30,7 +30,7 @@ class SingleList{ | |||||||
|     bool replace(int val, int key); |     bool replace(int val, int key); | ||||||
|     void makeEmpty(); |     void makeEmpty(); | ||||||
|     bool isEmpty() const; |     bool isEmpty() const; | ||||||
|     void peek() const; |     int peek() const; | ||||||
|     void print() const; |     void print() const; | ||||||
|     bool find(int val) const; |     bool find(int val) const; | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user