## DEV Community is a community of 871,998 amazing developers

We're a place where coders share, stay up-to-date and grow their careers.

Tapajyoti Bose

Posted on • Updated on • Originally published at tapajyoti-bose.Medium

# Practical Data Structure and Algorithm Fundamentals Every Programmer Must Know

Do you feel like programming problems bully you?

Fret not my friend, this article will provide you a comprehensive list of topics you should know regardless you want to crack an interview at a product-based company or become a freelancer who is paid based on the products you create.

## Arrays

This is simply the most used data structure in the world, without the knowledge of arrays, programmers will definitely mock you.

For Arrays skills you should focus on are:

1. Searching: Linear search & binary search are absolutely essential to know.
2. Sorting: Learn a few sorting algorithms and the trade-off between them. You can start off with the easy ones like bubble sort and selection sort, but should definitely have the knowledge of insertion sort, merge sort, and quicksort.
3. Multidimensional Arrays: Don't restrict yourself only to 1D arrays, you can also use 2D arrays, popularly known as matrices, but you rarely go beyond 2D arrays (unless you are in the field of data science).

Linked List is not that useful if you are trying to get into practical programming, enabling people to safely skip it. But for people trying to get into FANG (MANG, MIMANNG, or anything else you want to call them) it is a mandatory skill.

Start off with Single Linked List, then move on to Double Linked List, and Circular Linked List.

You should also practice problems regarding traversals, intersecting Linked Lists, merging Linked Lists, and reversing Linked Lists.

Even though the use of Linked List is quite rare, one cool application of them is while creating caches

## Stacks, Queues, and Deques

Occasionally they are also called pseudo data structures, as they don't require a strict ordering such as continuous blocks of memory in an array or the pointer structure of a linked list.

Stacks, Queues, and Deques can be implemented using both arrays and linked lists. The only mandate is following the LIFO, FIFO, and Deque paradigms (even though the linked list is more optimized for the implementation than arrays).

Having some practical experience with these data structures will suffice for most cases.

## Hash Maps and Hash Lists

Hash Maps are probably the most used data structure on the planet, after arrays. They are widely used for efficient searches. From JavaScript Objects to Python dictionaries, they are everywhere.

The use of Hash Lists isn't that common, but they too have niche applications. In most languages, they are known as Sets.

Knowledge of hashing algorithms is not required, to use them, but it does get you extra brownie points. For these too, you can get away with some basic hands-on knowledge.

With these, you have enough experience to call yourself a decent programmer... just don't get too cocky, history doesn't treat cocky people nicely.

Let's move on to other items on the list...

## Trees

Trees are quite useful data structures, especially while storing hierarchical data.

There are specific types of trees, that are commonly used:

1. Binary Trees: A binary tree is a tree in which each node has at most two children.
2. Binary Search Trees: A binary search tree is a binary tree in which all the nodes are arranged in such a way that the left subtree of a node only contains nodes with keys less than the node's key, and the right subtree contains nodes with keys greater than the node's key.
3. Trie: A trie, also known as prefix tree, is a tree data structure that is typically used to preprocess a set of strings.

For trees, you should learn the traversals, searches, and node insertions.

Knowledge of generic trees is rarely required, though if you are a web developer, it would be a great asset in your arsenal. It would help you understand how the DOM operates and even create complex nested UI programmatically, without hardcoding it.

## Graphs

Graphs too are rarely used data structures for both interview and practical programming. They typically are used for data analysis and visualization.

Some advanced applications like Map software & social media analysts extensively use graphs.

Traversals, searches, and shortest path (especially Dijkstra's algorithm) are the most critical skills required in the domain of Graphs.

## Algorithms

Apart from the Data Structures specific algorithms, some crucial paradigms to get acquainted with are:

1. Recursion: Recursion is a method of solving a computational problem where the solution depends on solutions to tiny instances of the same problem.
2. Greedy: Greedy algorithm is an approach for solving a problem by selecting the best option available at the moment
3. Dynamic Programming: Dynamic programming is a technique that breaks the problems into sub-problems, and saves the result for future purposes so that we do not need to compute the result again.
4. Backtracking: A recursive technique to build a solution incrementally, one piece at a time, removing those solutions that fail to satisfy the constraints of the problem at any point in time.

## Wrapping Up

1. Akash Roy's Algorithms Repository: https://github.com/theroyakash/algorithms.theroyakash.com
2. Akash Roy's Algorithms Website: https://algorithms.theroyakash.com/
3. Daily Coding Problems Solutions: https://github.com/ruppysuppy/Daily-Coding-Problem-Solutions

Research says, writing down your goals on pen & paper makes you 21% to 39% more likely to achieve them. Check out these notebooks and journals to make the journey of achieving your dreams easier: https://www.amazon.com/Tapajyoti-Bose/e/B09VGDDHRR

Need a Top Rated Front-End Development Freelancer to chop away your development woes? Contact me on Upwork

Want to see what I am working on? Check out my Personal Website and GitHub

Want to connect? Reach out to me on LinkedIn

I am a freelancer who will start off as a Digital Nomad in mid-2022. Want to catch the journey? Follow me on Instagram

Follow my blogs for Weekly new Tidbits on Dev

FAQ

These are a few commonly asked questions I get. So, I hope this FAQ section solves your issues.

1. I am a beginner, how should I learn Front-End Web Dev?
Look into the following articles: