I. Introduction:
-
This repository will help demonstrate my experience so far regarding Data Structures and Algorithms, one of the many vital aspects in Computer Science.
-
Before we start, I would like to give special credits to:
- Algorithms book by Robert Sedgewick, Kevin Wayne. This book is really a wonderful learning source for me.
- Professor George T. Heneiman, a truly wonderful, dedicated professor at Worcester Polytechnic Institute.
- Edx online learning platform, one of the best self-learning sources I have found.
With that being said, let's begin!
II. Data Structures:
- Here are the data structures and ADTs available in the dataStruct package:
- Interfaces:
- List
- Stack
- Queue
- Classes:
a. Implementing List, Stack, Queues:
- Array List
- Linked List
- Fixed Circular Queue
- Fixed Size Stack
- MultiSet
b. Binary Search Tree:
- Binary Tree
- AVL
c. Heap:
- Heap (abstract class)
- MaxHeap
- MinHeap
d. HashMap:
- Chain
- ChainingHashMap
e. Graph:
- Node
- Edge
- Graph (abstract class)
- Directed Graph
- Undirected Graph
III. Algorithms:
- There are currently 5 sub-packages in algorithms package:
- SortingAlgs:
- Bubble Sort
- Selection Sort
- Insertion Sort
- Merge Sort (in-class version and my prior version)
- Quick Sort (in-class version and my prior version)
- Heap Sort
- Counting Sort **
- Radix Sort **
** These sorting algorithms only work for arrays of integers, whereas the others can work on arrays of any Comparable objects.
- ExpressionEvaluator:
a. Package nodes: consists of provided stub classes for different type of mathematical operators.
b. PEMDAS Evaluator: based on Dijkstra two-stack algorithm, I implemented a complete expression evaluator.
- Games (console game):
- Tower of Hanoi.
- Word Ladder game.
- Word Pyramid game.
- Recursion Practice:
- Binary Search
- Euclidean Alg
- Resursive Alg (including Tower Of Hanoi solver)
- Cryptography:
- Ceasar Cipher (encryption + decryption)
Whew, that should be it for now. There are several other algorithms that I might consider including here in the future. And there are so many others out there that I have not completely explored (AI for example). Stay tuned, since the journey has just begun :)
---------------------------------THE END?----------------------------------------