- The implementations will be test-driven.
- Each data structure will have documentation.
When the words "data type" are used together they often refer to a model of some "type" of information. The phrase "data type" may remind you of primitive data types in programming languages like floating point numbers, integers, booleans, and characters, or perhaps it reminds you of more complex data types such as JPEG image files, WAV audio files, and MP4 movie files. If you are familiar with Object-Oriented Programming (OOP), you should be used to modeling all types of information into classes which could be thought of as "types". For example, you may have at some point modeled user data, website content, or video game state.
Wherever there is data in software there are usually actions that can be performed on that data. These actions are typically functions designed to limit the ways in which the data can be mutated (modified). One of OOP's main goals was to couple data types with its actions (class methods).
Over time, many software design patterns have emerged as programmers have realized certain data types, data actions, and software architectures have repeatedly solved specific common problems. One category of design patterns that has emerged is called Abstract Data Types (ADTs). ADTs are models for data types that are defined by their behavior instead of their information. At first, this can seem a bit confusing, but it's only giving a name (ADT) to a thing that programmers naturally do; coupling actions with data. Often this is thought of in reverse - like data is thought to have a type, and actions can belong to that type. However, ADTs define common behaviors or actions as a type and agnostic to the kind of information stored.
Abstract data types are amazing tools that solve many common programming problems. Learning to implement them can greatly enhance your understanding of software design problems.
- ✔︎ Array
- ✔︎ Bit Array
- ✔︎ Gap Buffer
- ✔︎ Sorted Array
- ✔︎ Stack
- ✔︎ Queue
- ✔︎ Priority Queue
- ✔︎ Circular Buffer
- ✔︎ Double Ended Queue
- ✔︎ Trie
- ✔︎ Min Heap
- ✔︎ Max Heap
- ✔︎ Binary Heap
- ✔︎ Binary Search Tree
- ✔︎ Graph
- ✔︎ Directed-Graph
- ✔︎ Set
- ✔︎ Enum
- ✔︎ Matrix
- ✔︎ Hash Table
- ✗ Rope
- ✗ Bloom Filter
- ✗ B-Tree
- ✗ T-Tree
- ✗ AA Tree
- ✗ AVL Tree
- ✗ Splay Tree
- ✗ Radix Tree
- ✗ Suffix Tree
- ✗ Merkle Tree
- ✗ Cartesian Tree
- ✗ Scapegoat Tree
- ✗ Weight-Balanced Tree
- write READMEs for
*
- create ART for
*
- add validtion to
*
- add more sort functions to sorted-array
- add shorted path algo to graph/directed-graph
- improve sll and dll