{"id":19866568,"url":"https://github.com/stoverc/datastructuresandalgorithms","last_synced_at":"2025-07-14T03:05:29.394Z","repository":{"id":48632645,"uuid":"516974685","full_name":"stoverc/DataStructuresAndAlgorithms","owner":"stoverc","description":"From-scratch attempts at implementing some common data structures and algorithms.","archived":false,"fork":false,"pushed_at":"2023-07-05T20:29:37.000Z","size":4616,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-01T00:36:26.221Z","etag":null,"topics":["algorithm","algorithms","core-language","cpp","data-structures","data-structures-algorithms","data-structures-and-algorithms","datastructures","java","linked-list","python","study-guide"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stoverc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-07-23T06:13:19.000Z","updated_at":"2023-07-08T20:03:38.000Z","dependencies_parsed_at":"2024-11-12T15:32:45.049Z","dependency_job_id":"7a8a4600-20e9-43a8-afec-ee52429e886a","html_url":"https://github.com/stoverc/DataStructuresAndAlgorithms","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/stoverc/DataStructuresAndAlgorithms","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stoverc%2FDataStructuresAndAlgorithms","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stoverc%2FDataStructuresAndAlgorithms/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stoverc%2FDataStructuresAndAlgorithms/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stoverc%2FDataStructuresAndAlgorithms/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stoverc","download_url":"https://codeload.github.com/stoverc/DataStructuresAndAlgorithms/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stoverc%2FDataStructuresAndAlgorithms/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265236737,"owners_count":23732493,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["algorithm","algorithms","core-language","cpp","data-structures","data-structures-algorithms","data-structures-and-algorithms","datastructures","java","linked-list","python","study-guide"],"created_at":"2024-11-12T15:26:24.127Z","updated_at":"2025-07-14T03:05:29.208Z","avatar_url":"https://github.com/stoverc.png","language":"C++","readme":"# Data Structures and Algorithms\nFrom-scratch attempts at implementing some common data structures and algorithms.\n \nCurrently, this repo contains (both bug-free and buggy) versions of code I've written to try to get a better understanding of the under-the-hood inner workings of various data structures. \n \nAs of this writing (23 July 2022), most of the code is in `Python3`, though some `Java` and `C++` updates have started to creep in as well. Future iterations will include more `Java` and `C++` code, and perhaps some other languages as well. **Update:** Due to some changes in circumstance, `C++` may become the main focal point of my contributions; we shall see.\n\nAs of 3 July 2022, a study guide has also made its way into the repo. This study guide is `LaTeX`'ed and is intended to help guide my studies + document the journey so far. **Update:** Later, I removed the `TeX` source code from the repo so that the code percentages would better reflect my _real_ contributions rather than showing a repo with 80% `TeX` code!\n\n## TODO:\n * Consider returning pointer-type variables in data structures where \"actual return\" of a variable is impossible (see `stack` in CPP).\n * Use [this link](https://stackoverflow.com/questions/68055899/concatenating-two-linked-lists-using-operator-overloading-c) to concert `Concatenate(...)` functionality into operator overloading in `LinkedList.cpp` file.\n * Incorporate more headers for new `LinkedList.cpp` file.\n * Work on porting the old `C++` singly linked list + doubly linked list algorithms to the new `LinkedList.cpp` implementation.\n * Make sure `C++` files adhere to best practices re: [Rule of Three/Five/Zero](https://en.cppreference.com/w/cpp/language/rule_of_three) and [RAII](https://en.cppreference.com/w/cpp/language/raii). \n * Continue adding to `SparseMatrixStruct.cpp` and `SparseMatrix.cpp` (include subtraction; possibly multiplication?).\n * Get all the `Python` code translated in to `C++` (!!!) and `Java` (as time permits).\n * Translate `Array` ADT from `C++` to `Python` and `Java`.\n * Get study guide source re-added so I can work on it elsewhere.\n * Keep working on the study guide.\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ch2\u003eChangelog\u003c/h2\u003e\u003c/summary\u003e\n\u003ch3\u003e5 Jul 2023 \u003c/h3\u003e\n\u003col\u003e\n    \u003cli\u003eReorganization of Trees, Tries, and Hybrid Trees in the study guide.\u003c/li\u003e\n    \u003cli\u003eLater, more fleshing out of study guide subsections on trees and substructures.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3\u003e26 Jun 2023\u003c/h3\u003e\n\u003col\u003e\n    \u003cli\u003eEdited the study guide to include more information about queues and related structures.\u003c/li\u003e\n    \u003cli\u003eMade several other study guide changes/commits throughout the day.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3\u003e23 Jun 2023\u003c/h3\u003e\n\u003col\u003e\n    \u003cli\u003eEdited the study guide to include more information about queues + to better delineate the subsections of the stack and queue topics.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3\u003e21 Jun 2023\u003c/h3\u003e\n\u003col\u003e\n    \u003cli\u003eIn array-based \u003ccode\u003estack.cpp\u003c/code\u003e: Made changes to \u003ccode\u003ePeek()\u003c/code\u003e.\u003c/li\u003e\n    \u003cli\u003eLater, made initial commits of \u003ccode\u003eNode.h\u003c/code\u003e, \u003ccode\u003eLinkedList.h\u003c/code\u003e, and \u003ccode\u003estack.cpp\u003c/code\u003e for \u003ccode\u003eLinkedList\u003c/code\u003e-based stack.\u003c/li\u003e\n    \u003cli\u003eMade changes to \u003ccode\u003eDisplay()\u003c/code\u003e functions in both \u003ccode\u003eLinkedList.h\u003c/code\u003e and \u003ccode\u003eLinkedList\u003c/code\u003e-based \u003ccode\u003estack.cpp\u003c/code\u003e.\u003c/li\u003e\n    \u003cli\u003eLater, made changes to \u003ccode\u003ePeek(int index)\u003c/code\u003e in \u003ccode\u003eLinkedList\u003c/code\u003e-based \u003ccode\u003estack.cpp\u003c/code\u003e to ensure that \u003ccode\u003e\"Invalid Position!\"\u003c/code\u003e prints whenever \u003ccode\u003eindex\u003c/code\u003e is greater than \u003ccode\u003etop+1\u003c/code\u003e.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3\u003e21 Jun 2023\u003c/h3\u003e\n\u003col\u003e\n    \u003cli\u003eInitial commit of array-based \u003ccode\u003estack.cpp\u003c/code\u003e in CPP.\u003c/li\u003e\n    \u003cli\u003eAdded \u003ccode\u003ePop()\u003c/code\u003e functionality to stack.\u003c/li\u003e\n    \u003cli\u003eAfter some time weighing how to handle the \u003ci\u003eStack underflow!\u003c/i\u003e situation, changed \u003ccode\u003ePop()\u003c/code\u003e to return pointer type variable.\u003c/li\u003e\n    \u003cli\u003eAfter learning that \u003ci\u003eStack underflow!\u003c/i\u003e resulted in seg fault in VSCode, I decided to undo the above change for the time being.\u003c/li\u003e\n    \u003cli\u003eLater, Added \u003ccode\u003ePeek(...)\u003c/code\u003e, \u003ccode\u003eIsEmpty()\u003c/code\u003e, and \u003ccode\u003eIsFull()\u003c/code\u003e.\u003c/li\u003e\n\u003c/ol\u003e\n \u003ch3\u003e14 Jun 2023\u003c/h3\u003e\n\u003col\u003e\n    \u003cli\u003eUpdated the study guide some restructuring re: Stacks, Queues, etc.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3\u003e13 Jun 2023\u003c/h3\u003e\n\u003col\u003e\n    \u003cli\u003eAdded \u003ccode\u003eMiddle()\u003c/code\u003e support to \u003ccode\u003eLinkedList.cpp\u003c/code\u003e.\u003c/li\u003e\n    \u003cli\u003eLater, updated the study guide with details related to linked lists, variants of linked lists, and linked  lists versus arrays.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3\u003e9 Jun 2023\u003c/h3\u003e\n\u003col\u003e\n    \u003cli\u003eIn \u003ccode\u003eLinkedList.cpp\u003c/code\u003e: Added \u003ccode\u003eAppend(...)\u003c/code\u003e functionality, which should have been here a long time ago.\u003c/li\u003e\n    \u003cli\u003eAfter much back-and-forth, added \u003ccode\u003eConcatenate(...)\u003c/code\u003e functionality. Later, this will come in the form of an overloaded operator.\u003c/li\u003e\n    \u003cli\u003eLater, refactored (old) \u003ccode\u003eConcatenate(...)\u003c/code\u003e into (renamed) \u003ccode\u003eJoin(...)\u003c/code\u003e and (new) (\u003ccode\u003evoid\u003c/code\u003e) \u003ccode\u003eConcatenate(...)\u003c/code\u003e.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3\u003e8 Jun 2023\u003c/h3\u003e\n\u003col\u003e\n    \u003cli\u003eIn \u003ccode\u003eLinkedList.cpp\u003c/code\u003e: Added new example + \u003ccode\u003eSortedQ()\u003c/code\u003e.\u003c/li\u003e\n    \u003cli\u003eLater, added \u003ccode\u003eDeleteDuplicates()\u003c/code\u003e in \u003ccode\u003eLinkedList.cpp\u003c/code\u003e.\u003c/li\u003e\n    \u003cli\u003eEventually, swapped order of parameters for \u003ccode\u003eInsert(...)\u003c/code\u003e to better match what happens in the \u003ccode\u003eArray\u003c/code\u003e ADT.\u003c/li\u003e\n    \u003cli\u003eAdded \u003ccode\u003eReverse()\u003c/code\u003e functionality to \u003ccode\u003eLinkedList.cpp\u003c/code\u003e.\u003c/li\u003e\n    \u003cli\u003eFrom home: Renamed \u003ccode\u003e/Okay/\u003c/code\u003e to \u003ccode\u003e/Working/\u003c/code\u003e.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3\u003e7 Jun 2023\u003c/h3\u003e\n\u003col\u003e\n    \u003cli\u003eAdded \u003ccode\u003eDisplay()\u003c/code\u003e to \u003ccode\u003eLinkedList.cpp\u003c/code\u003e.\u003c/li\u003e\n    \u003cli\u003eLater, added \u003ccode\u003eLength()\u003c/code\u003e, \u003ccode\u003eSum()\u003c/code\u003e, \u003ccode\u003eMin()\u003c/code\u003e, and \u003ccode\u003eMax()\u003c/code\u003e to \u003ccode\u003eLinkedList.cpp\u003c/code\u003e.\u003c/li\u003e\n    \u003cli\u003eAdded \u003ccode\u003eInsert(...)\u003c/code\u003e to \u003ccode\u003eLinkedList.cpp\u003c/code\u003e.\u003c/li\u003e\n    \u003cli\u003eLater, added \u003ccode\u003eDelete(...)\u003c/code\u003e to \u003ccode\u003eLinkedList.cpp\u003c/code\u003e, and later, made a small edit to \u003ccode\u003eDelete(...)\u003c/code\u003e.\u003c/li\u003e\n    \u003cli\u003eAt home, moved \u003ccode\u003eCPP/SinglyLinkedList/\u003c/code\u003e and \u003ccode\u003eCPP/DoublyLinkedList\u003c/code\u003e to \u003ccode\u003e/Obsolete/CPP/\u003c/code\u003e per inclusion of new \u003ccode\u003e/LinkedList/\u003c/code\u003e files.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3\u003e6 Jun 2023\u003c/h3\u003e\n\u003col\u003e\n    \u003cli\u003eChanged \u003ccode\u003eLinkedList.cpp\u003c/code\u003e to have \u003ccode\u003ehead\u003c/code\u003e as a pointer + percolated the associated method changes throughout.\u003c/li\u003e\n    \u003cli\u003eChanged the name of old-\u003ccode\u003eLinkedList.cpp\u003c/code\u003e file to \u003ccode\u003eLinkedListLegacy.cpp\u003c/code\u003e.\n\u003c/ol\u003e\n\u003ch3\u003e31 May 2023\u003c/h3\u003e\n\u003col\u003e\n    \u003cli\u003eInitial commit of \u003ccode\u003eNode.h\u003c/code\u003e and \u003ccode\u003eLinkedList.cpp\u003c/code\u003e; the particulars of this were written last week but uncommitted.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3\u003e26 May 2023\u003c/h3\u003e\n\u003col\u003e\n    \u003cli\u003eUpdated the study guide.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3\u003e24 May 2023\u003c/h3\u003e\n\u003col\u003e\n    \u003cli\u003eInitial commit of \u003ccode\u003eSparseMatrix.h\u003c/code\u003e and \u003ccode\u003eSparseMatrixNew\u003c/code\u003e, featuring hard-coded \u003ccode\u003eint\u003c/code\u003e-type data \u003ccode\u003eElement.x\u003c/code\u003e. I'm still trying to figure out the intricacies of the templating for non-integer types.\u003c/li\u003e\n    \u003cli\u003eLater, deleted those two files to try to figure out stuff.\u003c/li\u003e\n    \u003cli\u003eAfter much work + help on Stack Overflow: Got \u003ccode\u003eSparseMatrix.cpp\u003c/code\u003e to work with generics / templating. I'm an idiot for not considering forward-declaration as a solution sooner; forward-declaration literally solved one of my \u003ccode\u003eArray.h\u003c/code\u003e problems the other day!\u003c/li\u003e\n    \u003cli\u003eSplit \u003ccode\u003eSparseMatrix.cpp\u003c/code\u003e into \u003ccode\u003eElement.h\u003c/code\u003e and \u003ccode\u003eSparseMatrix.h\u003c/code\u003e.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3\u003e23 May 2023\u003c/h3\u003e\n\u003col\u003e\n    \u003cli\u003eInitial commit of \u003ccode\u003eSparseMatrixStruct.cpp\u003c/code\u003e.\u003c/li\u003e\n    \u003cli\u003eLater, added \u003ccode\u003eAdd()\u003c/code\u003e functionality to \u003ccode\u003eSparseMatrixStruct.cpp\u003c/code\u003e.\u003c/li\u003e\n    \u003cli\u003eUploaded initial commit of \u003ccode\u003eSparseMatrix.cpp\u003c/code\u003e, which uses \u003ccode\u003eclass\u003c/code\u003ees instead of \u003ccode\u003estruct\u003c/code\u003es.\u003c/li\u003e\n    \u003cli\u003eLater: Swapped \u003ccode\u003eRead()\u003c/code\u003e and \u003ccode\u003eDisplay()\u003c/code\u003e for overloaded \u003ccode\u003ecin\u003c/code\u003e and \u003ccode\u003ecout\u003c/code\u003e.\u003c/li\u003e\n    \u003cli\u003eEven later: Implemented old \u003ccode\u003eAdd()\u003c/code\u003e as custom \u003ccode\u003eSparseMatrix::operator+\u003c/code\u003e operator.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3\u003e22 May 2023\u003c/h3\u003e\n\u003col\u003e\n    \u003cli\u003eIn \u003ccode\u003eLowerTriangularMatrix.cpp\u003c/code\u003e: Revamped loops to start at \u003ccode\u003ei=1\u003c/code\u003e and \u003ccode\u003ej=1\u003c/code\u003e.\u003c/li\u003e\n    \u003cli\u003eLater, initial commit of \u003ccode\u003eUpperTriangularMatrix.h\u003c/code\u003e and \u003ccode\u003eUpperTriangularMatrix.cpp\u003c/code\u003e using row-major mapping.\u003c/li\u003e\n    \u003cli\u003eUsed \u003ccode\u003eLowerTriangularMatrix*\u003c/code\u003e to build initial commit of \u003ccode\u003eSymmetricMatrix*\u003c/code\u003e---and later, \u003ccode\u003eTridiagonalMatrix*\u003c/code\u003e---files.\u003c/li\u003e\n    \u003cli\u003eFixed bug in \u003ccode\u003eShortPrint()\u003c/code\u003e for \u003ccode\u003eSymmetricMatrix.cpp\u003c/code\u003e.\u003c/li\u003e\n    \u003cli\u003eLater, fixed indexing bug in \u003ccode\u003eTridiagonalMatrix.cpp\u003c/code\u003e and fixed typo in \u003ccode\u003eREADME\u003c/code\u003e.\u003c/li\u003e\n    \u003cli\u003eEven later: Initial commit of \u003ccode\u003eToeplitzMatrix.h\u003c/code\u003e and \u003ccode\u003eToeplitzMatrix.cpp\u003c/code\u003e.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3\u003e18 May 2023\u003c/h3\u003e\n\u003col\u003e\n    \u003cli\u003eAdded destructor to Array ADT in \u003ccode\u003eC++\u003c/code\u003e.\u003c/li\u003e\n    \u003cli\u003eCreated \u003ccode\u003eCPP/Matrices\u003c/code\u003e directory + added initial commit of \u003ccode\u003eDiagonalMatrix\u003c/code\u003e files (\u003ccode\u003e.cpp\u003c/code\u003e and \u003ccode\u003e.h\u003c/code\u003e).\u003c/li\u003e\n    \u003cli\u003eLater, created \u003ccode\u003eC++\u003c/code\u003e files \u003ccode\u003eLowerTriangularMatrix.h\u003c/code\u003e and \u003ccode\u003eLowerTriangularMatrix.cpp\u003c/code\u003e using row-major mapping.\u003c/li\u003e\n    \u003cli\u003eImproved commenting in \u003ccode\u003eArray.h\u003c/code\u003e, \u003ccode\u003eDiagonalMatrix.cpp\u003c/code\u003e, and \u003ccode\u003eLowerTriangularMatrix.cpp\u003c/code\u003e.\n    \u003cli\u003eAdded a driver to \u003ccode\u003eLowerTriangularMatrix.cpp\u003c/code\u003e to allow for entering a whole matrix all at once.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3\u003e16 May 2023\u003c/h3\u003e\n\u003col\u003e\n    \u003cli\u003eIn \u003ccode\u003eC++\u003c/code\u003e Array ADT: Added Setters, in part to allow the \u003ccode\u003epublic\u003c/code\u003e \u003ccode\u003eT* A\u003c/code\u003e to become private.\u003c/li\u003e\n    \u003cli\u003eLater, declared \u003ccode\u003eUnion2\u003c/code\u003e as a \u003ccode\u003efriend\u003c/code\u003e function to allow access to private member variables.\u003c/li\u003e\n    \u003cli\u003eAdded better commenting to show the breakdown of functions throughout code.\u003c/li\u003e\n    \u003cli\u003eLater, moved legacy functions to \u003ccode\u003eArrayLegacy.cpp\u003c/code\u003e and renamed \u003ccode\u003eUnion2\u003c/code\u003e and \u003ccode\u003eUnion3\u003c/code\u003e both as \u003ccode\u003eUnion\u003c/code\u003e.\u003c/li\u003e\n    \u003cli\u003eAlso: Implemented \u003ccode\u003efriend\u003c/code\u003e versions of \u003ccode\u003eIntersection\u003c/code\u003e and \u003ccode\u003eComplement\u003c/code\u003e.\u003c/li\u003e\n    \u003cli\u003eLater still: Changed a number of dereferencing operations to \u003ccode\u003e-\u003e\u003c/code\u003es.\u003c/li\u003e\n    \u003cli\u003eAlso, added \u003ccode\u003eIntersection\u003c/code\u003e, \u003ccode\u003eComplement\u003c/code\u003e member functions.\u003c/li\u003e\n\u003c/ol\u003e \n\u003ch3\u003e15 May 2023\u003c/h3\u003e\n\u003col\u003e\n    \u003cli\u003eIn \u003ccode\u003eC++\u003c/code\u003e Array ADT: Added functionality for \u003ccode\u003eIntersection\u003c/code\u003e and \u003ccode\u003eComplement\u003c/code\u003e.\u003c/li\u003e\n    \u003cli\u003eLater, simplified \u003ccode\u003eIntersection\u003c/code\u003e algorithm and changed the existing algorithm to \u003ccode\u003eLegacyIntersection\u003c/code\u003e for posterity.\u003c/li\u003e\n    \u003cli\u003eEventually figured out a non-\u003ccode\u003eVoid\u003c/code\u003e version of \u003ccode\u003eUnion\u003c/code\u003e in \u003ccode\u003eC++\u003c/code\u003e Array ADT. This will be fleshed out more soon.\u003c/li\u003e\n    \u003cli\u003eMimicked non-member \u003ccode\u003eUnion2\u003c/code\u003e code into member function \u003ccode\u003eUnion3\u003c/code\u003e.\u003c/li\u003e\n\u003c/ol\u003e \n\u003ch3\u003e12 May 2023\u003c/h3\u003e\n\u003col\u003e\n    \u003cli\u003eMade some small code tweaks to the Array ADT in \u003ccode\u003eC++\u003c/code\u003e, and later, added support for \u003ccode\u003eContains\u003c/code\u003e and \u003ccode\u003e(Unsorted) Union\u003c/code\u003e.\u003c/li\u003e\n\u003c/ol\u003e \n\u003ch3\u003e11 May 2023\u003c/h3\u003e\n\u003col\u003e\n    \u003cli\u003eTo Array ADT in \u003ccode\u003eC++\u003c/code\u003e: Added \u003ccode\u003eGet\u003c/code\u003e, \u003ccode\u003eSet\u003c/code\u003e, \u003ccode\u003eSum\u003c/code\u003e, \u003ccode\u003eAvg\u003c/code\u003e, \u003ccode\u003eMax\u003c/code\u003e, and \u003ccode\u003eMin\u003c/code\u003e.\u003c/li\u003e\n    \u003cli\u003eLater, rewrote some code in a clearer manner + deleted some commented-out code in \u003ccode\u003eC++\u003c/code\u003e Array ADT.\u003c/li\u003e\n    \u003cli\u003eIn Array ADT \u003ccode\u003eC++\u003c/code\u003e files: Added \u003ccode\u003eReverse\u003c/code\u003e, \u003ccode\u003eLeftShift\u003c/code\u003e, \u003ccode\u003eLeftRotate\u003c/code\u003e, \u003ccode\u003eRightShift\u003c/code\u003e, \u003ccode\u003eRightRotate\u003c/code\u003e.\u003c/li\u003e\n    \u003cli\u003eAdded functionality in Array ADT for \u003ccode\u003eSortedInsert\u003c/code\u003e, \u003ccode\u003eIsSorted\u003c/code\u003e, and \u003ccode\u003ePosNegSwap\u003c/code\u003e.\u003c/li\u003e\n    \u003cli\u003eLater, improved incapsulation in Array ADT by making member vars private + adding getters.\u003c/li\u003e\n\u003c/ol\u003e \n\u003ch3\u003e10 May 2023\u003c/h3\u003e\n\u003col\u003e    \n    \u003cli\u003eCommitted initial version of Array ADT in \u003ccode\u003eC++\u003c/code\u003e (both \u003ccode\u003e.cpp\u003c/code\u003e and \u003ccode\u003e.h\u003c/code\u003e files).\u003c/li\u003e\n    \u003cli\u003eLater, fixed up some pointer-related things in Array ADT.\u003c/li\u003e\n\u003c/ol\u003e \n\u003ch3\u003e19 Aug 2022\u003c/h3\u003e\n\u003col\u003e\n    \u003cli\u003eMade some small edits to linked list in \u003ccode\u003eC++\u003c/code\u003e\u003c/li\u003e\n    \u003cli\u003eCompleted doubly linked list in \u003ccode\u003eC++\u003c/code\u003e with generics.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3\u003e14 Aug 2022\u003c/h3\u003e\n\u003col\u003e\n    \u003cli\u003eCompleted singly linked list in \u003ccode\u003eC++\u003c/code\u003e with generics.\u003c/li\u003e\n    \u003cli\u003eLearned more about pointers, but still need additional refresher.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3\u003e12 Aug 2022\u003c/h3\u003e\n\u003col\u003e\n    \u003cli\u003eStarted working on singly linked lists in \u003ccode\u003eC++\u003c/code\u003e.\u003c/li\u003e\n    \u003cli\u003eIn so doing, realized I have \u003cb\u003ea lot\u003c/b\u003e to (re-)learn (for the 17th time) about pointers.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3\u003e10 Aug 2022\u003c/h3\u003e\n\u003col\u003e\n    \u003cli\u003eGot a 0\u003csup\u003eth\u003c/sup\u003e draft of hash sets working in \u003ccode\u003eC++\u003c/code\u003e. To get this working, I had to abandon my aspirations for generic types and just stick with integers. Generic types will come soon! ::crosses fingers::\u003c/li\u003e\n    \u003cli\u003eLater, added \u003cb\u003eworking\u003c/b\u003e(!!!) generics to \u003ccode\u003eC++\u003c/code\u003e hash sets.\u003c/li\u003e\n    \u003cli\u003eAlso, removed references to \u003ccode\u003ethis-\u003e*\u003c/code\u003e, as that doesn't appear to be very \u003ccode\u003eC++\u003c/code\u003e-like? :shrug:\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3\u003e23 Jul 2022\u003c/h3\u003e\n\u003col\u003e\n    \u003cli\u003eDecided to try my hand at hash sets in \u003ccode\u003eC++\u003c/code\u003e after having not written \u003ccode\u003eC++\u003c/code\u003e code in 15 years. It did \u003cb\u003enot\u003c/b\u003e go well!\u003c/li\u003e\n    \u003cli\u003eMade some small tweaks to the \u003ccode\u003eJava\u003c/code\u003e Hash Map file.\u003c/li\u003e\n    \u003cli\u003eEdited the README and the .gitignore files.\u003c/li\u003e\n    \u003cli\u003eLater, removed some of the \u003ccode\u003ePython\u003c/code\u003e test code so the GitHub calculator thing gets the language percentages more accurate.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3\u003e16 Jul 2022\u003c/h3\u003e\n\u003col\u003e\n    \u003cli\u003eFilled in the \u003ccode\u003eStacks and Queues\u003c/code\u003e section of the study guide.\u003c/li\u003e\n    \u003cli\u003eAlso, added in the \u003ccode\u003eStack\u003c/code\u003e and \u003ccode\u003eQueue\u003c/code\u003e rows of the first-page complexity table.\n\u003c/ol\u003e\n\u003ch3\u003e12 Jul 2022\u003c/h3\u003e\n\u003col\u003e\n    \u003cli\u003eMade a few small edits to the study guide.\u003c/li\u003e\n    \u003cli\u003eAlso, added a section for \u003ccode\u003eStacks and Queues\u003c/code\u003e + filled in the subsections a bit before bedtime.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3\u003e9 Jul 2022\u003c/h3\u003e\n\u003col\u003e\n    \u003cli\u003eMade some complexity-related edits to the study guide.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3\u003e8 Jul 2022\u003c/h3\u003e\n\u003col\u003e\n    \u003cli\u003eRenamed the repo to include common algorithms. Will ultimately restructure the directories as well.\u003c/li\u003e\n    \u003cli\u003eLater, restructured all subdirectories.\u003c/li\u003e\n    \u003cli\u003eMuch later, wrote + uploaded initial versions of \u003ccode\u003eSelectionSort\u003c/code\u003e for both \u003ccode\u003ePython3\u003c/code\u003e and \u003ccode\u003eJava\u003c/code\u003e.\n    \u003cp\u003eBoth versions include the algorithm, as well as a \u003ccode\u003eSelectionSortAnalysis\u003c/code\u003e method/function which shows how the number of steps grows as the size of the input array doubles.\u003c/p\u003e\n    \u003cp\u003eWhat I \u003ci\u003ereallllllly\u003c/i\u003e want to show is how time increases, not code count. I'll do some digging into that soon and try to implement ASAP.\u003c/p\u003e\u003c/li\u003e\n    \u003cli\u003eMuch later still, updated the study guide pretty heavily, including uses of newly-included images and a new \u003ctext\u003e.gitignore\u003c/text\u003e file.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3\u003e7 Jul 2022\u003c/h3\u003e\n\u003col\u003e\n    \u003cli\u003eBig changes to the study guide, including:\n    \u003cul\u003e\n        \u003cli\u003e\u003ci\u003eData Structures\u003c/i\u003e and \u003ci\u003eSearch Algorithms\u003c/i\u003e main sections.\u003c/li\u003e\n        \u003cli\u003eA full-populated and linked search algorithm complexity table.\n        \u003cli\u003eA fully-written section on \u003cb\u003eSelection Sort\u003c/b\u003e (plus a lot of dummy text for other sort algorithms).\u003c/li\u003e\n    \u003c/ul\u003e\n\u003c/ol\u003e\n\u003ch3\u003e6 Jul 2022\u003c/h3\u003e\n\u003col\u003e\n    \u003cli\u003eFirst upload of a Java version (\u003ccode\u003eHashSet\u003c/code\u003e) plus a general restructuring of directory structure + a revamped \u003ccode\u003e.gitignore\u003c/code\u003e file.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3\u003e4 Jul 2022\u003c/h3\u003e\n\u003col\u003e\n    \u003cli\u003eI added some details to the study guide, and implemented BFS to the \u003ccode\u003eBST.py\u003c/code\u003e file. Next up, I plan to implement some deletion methods, and possibly to adapt some BST-implemented methods to code a less-specific brand of tree.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3\u003e3 Jul 2022\u003c/h3\u003e\n\u003col\u003e\n    \u003cli\u003eI'm keeping a study guide to go along with my explorations into these data structures/algorithms. I decided it was a good idea to upload the related .tex, .sty, and .pdf files.\u003c/li\u003e\n    \u003cli\u003eLater, added BST information to both \u003ccode\u003eOkay\u003c/code\u003e directory (in Python3) and study guide.\n\u003c/ol\u003e\n\u003ch3\u003e27 Jun 2022\u003c/h3\u003e\n\u003col\u003e\n    \u003cli\u003eUsed some snippets from \u003ca href = \"https://stackoverflow.com/questions/68974018/insert-at-index-in-linked-list\"\u003ethis answer\u003c/a\u003e to prototype a redo of SinglyLinkedList. This code + the code in the accepted comment contained \u003e= 2 very serious bugs and needed quite a bit of plussing up, so I did that plus thoroughly documented everything before **finally** reaching the level of \"accepted LeetCode answer.\"\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3\u003e26 Jun 2022\u003c/h3\u003e\n\u003col\u003e\n\u003cli\u003eInitial upload.\u003c/li\u003e\n\u003cli\u003eLater, updated the README.md file to its current state.\u003c/li\u003e\n\u003cli\u003eApproximately 22 hours later, attempted to use \u003ca href = \"https://www.geeksforgeeks.org/data-structures/linked-list/\"\u003ethe GeeksForGeeks solution\u003c/a\u003e as an inspiration for a new implementation of SinglyLinkedList, only to find that this one times out on \u003ca href = \"https://leetcode.com/explore/learn/card/linked-list/209/singly-linked-list/1290/\"\u003eLeetCode\u003c/a\u003e. I think my best plan of action moving forward will be to try a whole new implementation; I have some ideas!\u003c/li\u003e\n\u003c/ol\u003e\n\u003c/details\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstoverc%2Fdatastructuresandalgorithms","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstoverc%2Fdatastructuresandalgorithms","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstoverc%2Fdatastructuresandalgorithms/lists"}