We may earn an affiliate commission when you visit our partners.
Course image
Shrirang Korde

A data structure is a collection of data values, the relationships among them, and the functions or operations that can be applied to the data. Different types of data structures are suited to different kinds of applications, and some are highly specialized to specific task. Data structures provide a means to manage large amounts of data efficiently. Efficient data structures are key to designing efficient algorithms.  Data structures can be used to organize the storage and retrieval of information stored in both main memory and secondary memory.

Read more

A data structure is a collection of data values, the relationships among them, and the functions or operations that can be applied to the data. Different types of data structures are suited to different kinds of applications, and some are highly specialized to specific task. Data structures provide a means to manage large amounts of data efficiently. Efficient data structures are key to designing efficient algorithms.  Data structures can be used to organize the storage and retrieval of information stored in both main memory and secondary memory.

Data structures serve as the basis for ADT. The ADT  (Abstract Data Types) defines the logical form of the data type. Data structures are based on the ability of a computer to fetch and store data at any place in its memory, specified by a pointer. 

The array and record data structures are based on computing the addresses of data items with arithmetic operations. The linked data structures are based on storing addresses of data items within the structure itself. The implementation of a data structure usually requires writing a set of procedures that create and manipulate instances of that structure.

A linked list is a linear collection of data elements whose order is not given by their physical placement in memory. Each element points to the next. It is a data structure consisting of a collection of nodes which together represent a sequence. Each node contains: data, and a  link to the next node in the sequence. This structure allows for efficient insertion or removal of elements from any position in the sequence during iteration.

Following topics are covered as part of hands-on / Live coding videos :

Linked Lists (LL) Implementation / Coding:

  • Concept of link

  • Creating a Linked List (LL)

  • Appending a node to LL

  • Display of LL

  • Length of LL (count)

  • Reversing of LL

  • Sorting

  • Adding node at Start of LL

  • Inserting node in between of LL

  • Deleting a node

  • Creating a Double LL

  • Appending a node to Double LL

  • Display of Double LL

  • Length of Double LL (count)

  • Reversing of Double LL

  • Inserting a node in between a Double LL

  • Rotate Double LL

  • Count Pairs with criteria for a Double LL

  • Questions

  • Circular LL overview (access pointers)

  • Creating a Circular LL

  • Adding node at Start Circular LL (approach 1)

  • Traversal / Display Circular LL (approach 1)

  • Inserting node in between a Circular LL (approach 1)

  • Deleting a node

  • Adding node at End Circular LL (approach 2)

  • Traversal / Display Circular LL (approach 2)

  • Circular LL - Queue (Adding Node)

  • Circular LL - Queue (Removing Node)

  • Questions

Stacks (Implementation / Coding):

  • Stack overview

  • Stack with Array

  • Expressions

  • Evaluation of Postfix expression

  • Infix to Post fix

  • Evaluation of Prefix overview. infix to prefix overview

  • Application: Finding next big element

  • Stack using Linked List

  • Reversing Stack with Linked List

  • Questions

Queues (Implementation / Coding) :

  • Queue Overview

  • Queue using Array

  • Priority Queue with Array

  • Queue using Linked List

  • Priority Queue using Double Linked List

  • Questions

Recursion

  • Recursion Overview, Phases, Types

  • Recursive Functions

  • Linked List operations using Recursion

  • Questions

Trees

  • Binary Trees

  • Tree Traversals

    • Inorder

    • preorder

    • postorder

  • Binary Search Trees (BST)

  • BST - Insertion

  • BST - Insertion & Traversals

  • Traversals Explained

  • BST - Search

    • Search operations

  • BST Deletion

    • Deletion cases

  • Binary Tree to BST conversion

  • Identify a Tree to be BST

  • Identify zero, one child nodes of BST

  • Questions

Sorting

  • Selection Sort

  • Selection Sort Analysis

  • Bubble Sort

  • Bubble Sort Analysis

  • Insertion Sort

  • Insertion Sort Analysis

  • Quick Sort

  • Quick Sort Analysis

  • Quick Sort, Merge Sort Discussion

  • Questions

Threaded Binary Trees

  • Need for Threaded Binary Tree (TBT)

  • Threaded Binary Tree Overview

  • One way Structure, Traversal

  • Two way Structure, Traversal

  • Insert functionality

  • Traversal functionality

  • Delete functionality

AVL Trees

  • Need for AVL Trees

  • AVL Tree Overview

  • Tree Rotations (Left, Right)

  • Insert cases, Application of Insert cases

  • Insert Functionality code, Demo

  • Functions Code - LeftRight rotations, RightLeft rotations,

  • Delete Functionality, Rotations needed for Delete

Graphs

  • Graphs

  • Graph Types

    • Adjacency Matrix, Adjacency List

  • Traversals

    • BFS (Breadth First Search)

    • BFS Algorithm

    • DFS (Depth First Search)

    • DFS Algorithm

  • Spanning tree

  • Dijkstra Shortest path Algorithm

  • Minimum Spanning tree

  • Prim's algorithm

  • Kruskal   algorithm

Hashing, Collision Resolution

  • Hashing

  • Hash Functions

  • Collision Resolution

  • Open Addressing (Closed Hashing)

  • Probing

    • Linear, Quadratic, Double hashing

  • Load factor of Hash Table

  • Deletion

  • Separate Chaining (Open Hashing)

  • Cuckoo Hashing

Lexicographic Order (Lexical Order)

  • Overview

  • Previous Permutation

  • Next Permutation

Enroll now

What's inside

Learning objective

Data structures programming,

Syllabus

Linked List (Implementation / Coding)
About DS Course
Summarizing DS Topics about Live Coding (/ Hands-on)
Before understanding Linked List
Read more

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Covers a wide range of data structures, including linked lists, stacks, queues, trees, graphs, and hash tables, which are essential for software development
Includes hands-on coding videos for implementing data structures, which is valuable for practical application and skill development
Explores sorting algorithms like selection sort, bubble sort, insertion sort, and quicksort, which are fundamental concepts in computer science
Examines tree traversals (inorder, preorder, postorder) and binary search tree operations, which are crucial for understanding tree-based data structures
Discusses recursion and its application to linked list operations, which can be a challenging but important concept for programmers to master
Includes coverage of AVL trees, threaded binary trees, graphs, and hashing, which are more advanced data structures and algorithms

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Practical introduction to data structures

According to learners, this course provides a solid foundation in fundamental data structures and algorithms. Many appreciate the hands-on coding examples and live coding sessions, finding them highly practical and helpful for understanding concepts like Linked Lists, Stacks, Queues, Trees, and Graphs. Students report gaining a clearer understanding and feeling better prepared for technical interviews or practical applications. While generally well-received, some students noted that the course could benefit from a deeper dive into algorithmic analysis or cover more advanced topics.
Provides a good base for further study.
"This course provided me with a solid foundation in data structures that I can now build upon."
"It's a great starting point if you need to learn or refresh your knowledge on fundamental data structures."
"I feel much more confident tackling more advanced algorithm problems now."
"Gave me the groundwork needed to pass technical screening tests."
Concepts are explained clearly and simply.
"The instructor explains complex topics like trees and graphs in a way that is easy to follow and understand."
"The explanations of how each data structure works conceptually before coding were excellent."
"I found the content and explanations very clear and concise, perfect for a beginner or intermediate learner."
"Helped me really understand the core principles behind stacks and queues."
Strong focus on practical implementation.
"The hands-on coding and projects are the strongest part of the course for me, giving me real-world practice."
"I really appreciated the live coding videos; they helped solidify my understanding of how to implement these structures."
"Implementing the data structures myself in code truly made the concepts stick, much better than just theory."
"I enjoyed the practical nature of the course, coding along was very beneficial."
Some reviewers noted minor code discrepancies.
"Found a few minor errors in the provided code examples which was a bit frustrating..."
"Some of the code snippets weren't perfectly aligned with the video, requiring minor adjustments."
"While overall good, occasional code bugs needed troubleshooting."
"Encountered a few typos in the code presented."
Could go deeper on some topics or analysis.
"Could use more in-depth coverage on complex topics or optimization techniques like Big O analysis."
"While the implementation is good, I wish there was more focus on the theoretical analysis of algorithms."
"Some sections felt a bit rushed, and I had to look up external resources for more detail."
"I expected a bit more on the performance implications and trade-offs of different structures."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Hands-On Data Structures with these activities:
Review Basic Programming Concepts
Solidify your understanding of fundamental programming concepts like pointers, memory management, and object-oriented principles. This will provide a strong foundation for grasping the more complex data structure implementations covered in the course.
Browse courses on Pointers
Show steps
  • Review your notes from introductory programming courses.
  • Complete online quizzes on basic programming concepts.
  • Write simple programs to practice using pointers and memory management.
Review 'Data Structures and Algorithm Analysis in C++'
Deepen your understanding of data structures and algorithms using a classic textbook. This will provide a more theoretical background to the hands-on coding covered in the course.
Show steps
  • Read the chapters relevant to the data structures covered in the course.
  • Work through the examples and exercises in the book.
  • Compare the book's implementations with the implementations covered in the course.
Implement Linked List Operations
Reinforce your understanding of linked lists by implementing various operations. This will solidify your ability to manipulate linked lists and prepare you for more complex data structure implementations.
Show steps
  • Implement insertion, deletion, and search operations on singly linked lists.
  • Implement insertion, deletion, and search operations on doubly linked lists.
  • Implement reversing a linked list.
  • Implement sorting a linked list.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Build a Simple Stack-Based Calculator
Apply your knowledge of stacks to build a practical application. This will help you understand how stacks can be used to solve real-world problems.
Show steps
  • Design the calculator's user interface.
  • Implement the stack data structure.
  • Implement the calculator's arithmetic operations.
  • Test the calculator thoroughly.
Create a Video Tutorial on Binary Search Trees
Solidify your understanding of binary search trees by creating a video tutorial. Teaching others is a great way to reinforce your own learning.
Show steps
  • Plan the content of the video tutorial.
  • Record the video tutorial.
  • Edit the video tutorial.
  • Publish the video tutorial online.
Contribute to an Open Source Data Structures Library
Gain practical experience by contributing to an open-source data structures library. This will expose you to real-world coding practices and collaboration.
Show steps
  • Find an open-source data structures library on GitHub.
  • Identify a bug or feature to work on.
  • Submit a pull request with your changes.
  • Respond to feedback from the library maintainers.
Review 'Introduction to Algorithms'
Supplement your understanding of data structures with a rigorous treatment of algorithms. This will provide a deeper understanding of the efficiency and performance characteristics of different data structures.
Show steps
  • Read the chapters relevant to the algorithms used in the course.
  • Work through the examples and exercises in the book.
  • Analyze the time and space complexity of the algorithms.

Career center

Learners who complete Hands-On Data Structures will develop knowledge and skills that may be useful to these careers:
Algorithm Developer
Algorithm developers design and implement efficient algorithms for various applications, requiring a deep understanding of data structures and their properties. This course helps algorithm developers by providing practical experience with fundamental data structures like linked lists, stacks, queues, trees, and graphs. The course covers essential algorithms for sorting, searching, and traversing data structures, which are all critical skills for an algorithm developer. By mastering these concepts, one can design algorithms that are both efficient and effective. The hands-on coding exercises in the course allow them to experiment with different data structures and algorithms, gaining valuable insights into their performance characteristics. This course is essential for anyone who aims to become a successful algorithm developer.
Software Engineer
A software engineer requires a strong understanding of data structures to design and implement efficient algorithms and software systems. This course helps build a foundation in fundamental data structures like linked lists, stacks, queues, trees, and graphs. A software engineer leverages knowledge of these structures to organize and manage data effectively, optimizing performance and scalability. The hands-on coding exercises, including linked list manipulations, stack implementations, and tree traversals, directly translate to practical skills used daily by a software engineer. By understanding the nuances of each data structure, one can make informed decisions about which structure to use for a given problem, leading to more robust and efficient software solutions. Someone hoping to enter this field will find this course beneficial.
Systems Architect
Systems architects design and oversee the implementation of complex software systems, and a strong understanding of data structures is essential for making informed design decisions. This course helps systems architects because it provides a comprehensive overview of fundamental data structures like linked lists, stacks, queues, trees, and graphs. Systems architects can leverage knowledge of these structures to design scalable, efficient, and maintainable systems. By understanding the trade-offs between different data structures, a systems architect can make informed decisions about which structures to use for different components of the system. This course is very helpful for anyone who desires to be a systems architect.
Machine Learning Engineer
Machine learning engineers build and deploy machine learning models, and a solid understanding of data structures is crucial for optimizing model performance and scalability. This course helps machine learning engineers because it provides a strong foundation in data structures such as trees, graphs, and hashing, which are used extensively in machine learning algorithms. Machine learning engineers can utilize knowledge of these data structures to improve the efficiency of their models and handle large datasets effectively. The course's focus on trees (like decision trees) and graphs (like neural networks) is particularly relevant for machine learning applications. Anyone interested in becoming a machine learning engineer should take this course
Data Scientist
Data scientists often work with large datasets and complex algorithms, making a solid understanding of data structures crucial. This course helps data scientists understand how data is organized and accessed, enabling them to optimize data processing and analysis pipelines. The course's focus on trees, graphs, and hashing provides a strong foundation for implementing machine learning algorithms and data mining techniques. Data scientists must be able to efficiently retrieve and manipulate data, and this course provides the practical coding skills needed to do so. A data scientist can apply the concepts learned in this course to improve the performance of their models and gain deeper insights from their data. This course will be very helpful to someone who desires a career as a data scientist.
Full-Stack Developer
Full stack developers work on both the front-end and back-end of web applications, requiring a broad understanding of data management. This course helps full stack developers because it provides a foundation in data structures like arrays, linked lists, and hash tables. Full stack developers can leverage knowledge of these structures to optimize both client-side and server-side code. The hands-on coding exercises in the course allow them to experiment with different data structures and algorithms, gaining valuable insights into their performance characteristics in different contexts. This course is beneficial for anyone who aims to become a full stack developer.
Mobile Application Developer
Mobile application developers need to be mindful of performance and resource usage, making a solid understanding of data structures essential. This course helps mobile application developers because it provides practical experience with fundamental data structures like linked lists, stacks, queues, trees, and graphs. Mobile application developers use these structures to manage data efficiently and optimize the performance of their apps. The course's hands-on coding exercises allow them to experiment with different data structures and algorithms, gaining valuable insights into their performance characteristics on mobile devices. This course is extremely helpful for anyone who strives to become a mobile application developer.
Database Administrator
A database administrator is responsible for managing and maintaining databases, and a strong understanding of data structures is essential for optimizing database performance and ensuring data integrity. This course helps database administrators because it provides a solid foundation in data structures such as trees, graphs, and hashing, which are used extensively in database systems. The course's coverage of topics like binary search trees and hash tables is particularly relevant for database indexing and query optimization. A database administrator can utilize the knowledge gained from this course to design efficient database schemas and optimize query performance. Anyone wishing to become a database administrator would benefit from this course.
Game Developer
Game development relies heavily on efficient data structures to manage game objects, game states, and rendering pipelines. This course would assist a game developer by providing a comprehensive overview of fundamental data structures like linked lists, stacks, queues, trees, and graphs. The course's coverage of topics like trees and graphs is particularly relevant for implementing game AI and pathfinding algorithms. Game developers use these structures to create immersive and interactive gaming experiences. This course provides the practical coding skills needed to implement these data structures efficiently in a game engine. This course is very helpful for anyone who desires a career in game development.
Blockchain Developer
Blockchain developers create and maintain blockchain-based applications, and a strong understanding of data structures is essential for ensuring the security and efficiency of these systems. This course may be useful to blockchain developers because it provides a foundation in data structures such as linked lists, trees, and hash tables. Blockchain developers can leverage knowledge of these data structures to optimize the performance of their applications. This course will be helpful for anyone who hopes to become a blockchain developer.
Embedded Systems Engineer
Embedded systems engineers often work with limited resources, making efficient data management crucial. This course may assist embedded systems engineers because it provides an understanding of fundamental data structures like arrays, linked lists, and queues. The knowledge of stacks taught in this course is useful for managing function calls and interrupt handlers. Embedded systems engineers can find this course helpful in optimizing their code for resource-constrained environments. This course may be useful for anyone who hopes to become an embedded systems engineer.
Web Developer
Web developers use data structures to manage data and build dynamic web applications. This course may be useful to web developers because it provides a foundation in data structures like arrays, linked lists, and hash tables. While web development often involves higher-level frameworks and libraries, understanding the underlying data structures can help to optimize performance and solve complex problems. Web developers can leverage knowledge of these structures to improve the efficiency of their code and build more scalable web applications. This course may provide web developers with valuable insights into how data is managed behind the scenes.
DevOps Engineer
DevOps engineers automate and streamline software development and deployment processes, which can benefit from understanding data structures. This course may be helpful to DevOps engineers because it provides a foundation in data structures like arrays, linked lists, and hash tables. They can leverage the knowledge of these data structures to manage configuration data, automate infrastructure provisioning, and monitor system performance. DevOps engineers may find this course useful in optimizing their workflows and building more efficient deployment pipelines.
Data Analyst
Data analysts examine and interpret data to identify trends and insights, and this course helps them understand how data is organized. While data analysts primarily use tools like SQL and spreadsheet software, understanding the underlying data structures can help them optimize data retrieval and analysis processes. Data analysts can leverage knowledge of these structures to improve the efficiency of their queries and gain a deeper understanding of the data they are working with. This course may be useful for a data analyst.
Quality Assurance Engineer
Quality assurance engineers design and execute tests to ensure software quality, which can benefit from understanding data structures. This course may assist quality assurance engineers because it provides a foundation in data structures like arrays, linked lists, and trees. A quality assurance engineer can leverage this knowledge to design more effective test cases, identify potential performance bottlenecks, and ensure the robustness of software systems. The knowledge gained can also help in understanding the internal workings of the software being tested, leading to more thorough and targeted testing efforts.

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Hands-On Data Structures.
While this book uses C++, the underlying data structure concepts are universal. It provides a rigorous treatment of data structures and algorithm analysis, making it a valuable resource for understanding the performance characteristics of different data structures. It can be used as a reference for understanding the theoretical aspects of data structures.
Considered a classic textbook in algorithms, this book offers a rigorous and comprehensive treatment of data structures and algorithms. While it doesn't focus solely on Python, it provides detailed explanations and pseudocode for various data structures and algorithms covered in the course. It's a valuable resource for understanding the theoretical underpinnings of data structures and their performance characteristics.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser