Many of the entries above actually contain different implementations, and of those different implementations, equally as many contain other data structures to back their own implementation.
This is why you reach a certain synergy effect at some point.
Let's look at them a little deeper while you get to know a few of their traits and their average time complexity.
You can use this information as a base for your own research because there is way more to those than only the following information.
-> Arrays
- Most primitive and native data structure
- Linear data structure, values are stored one after the other
- Static in size, once initialized not resizable
- Base for many other data structures
Average time complexity of common array operations:
- Complex data structures but still pretty basic
- Can be backed by arrays or come as linked lists (singly, doubly linked)
- Linear data structure, values are stored one after the other
- Dynamic in size
- Base for other data structures
Average time complexity of common list operations:
- Linear data structure
- First-in-first-out
- Can be backed by an array or more prominently by a linked list
- Dynamic in size
- Often used to store work that is to be processed one after the other
- Has more implementations with different additional traits
Average time complexity of common queue operations:
- Linear data structure
- Last-in-first-out
- Can be backed by an array or more prominently by a linked list (sometimes by a Dequeue)
- Dynamic in size
- Undo operations are usually based on stacks, for example
Average time complexity of common stack operations:
- One of a kind (unique value) storage
- Can be backed by a hash table or a tree
- Dynamic in size
- Especially used when you only want unique values of any kind
- Can be ordered and unordered
- A recursive collection of nodes
- Dynamic in size
- Can be ordered and unordered
- Can contain unique and non-unique values
- Often used to model documents or by your favorite programming language's parser (Abstract Syntax Tree)
Average time complexity of common tree operations:
- Non-linear data structure
- Consists of nodes (vertex) and edges
- Can store information on its edges
- Can be directed and undirected
- Dynamic in size
- Often used to represent networks (your Facebook connections can be represented as a graph, e.g.)
Average time complexity of common graph operations:
- Key-value mapping
- Uses math operations to map a hash value to a spot in a table
- Unordered
- Needs keys that are hashable
- Dynamic in size
- Often used when quick lookup of values by keys is needed
Average time complexity of common hash table operations:
I've started to develop software at the age of 12. That was 21 years ago.
Here is some advice I want to give to any aspiring software developer trying to learn the craft and getting into the industry.
A thread. ↓
1. Spend more time on the why
Ask yourself honestly why you want to learn to develop software.
It is okay to go for the money. In many countries, software developers earn top salaries.
But you should always be aware of your own motives.
If you constantly tell yourself you do it because you love it, while silently thinking that it's for the money that helps you support your family, you could actually end with burnout or depression.