Skip to main content

65 docs tagged with "data structures"

View all tags

Algorithm for Bloom Filters

Bloom Filters are probabilistic data structures used in applications where space efficiency is crucial, and approximate answers are acceptable, like database caching and network filtering.

Arrays

Learn about arrays in JavaScript, Java, Python, and C++. Understand how to declare, initialize, and manipulate arrays across different programming languages.

Arrays in Data Structures and Algorithms

An array is a collection of items stored at contiguous memory locations. It is a data structure that stores a fixed-size sequential collection of elements of the same type. An array is used to store a collection of data, but it is often more useful to think of an array as a collection of variables of the same type.

AVL Trees

In this blog post, we'll explore AVL trees, a type of self-balancing binary search tree that ensures efficient searching, insertion, and deletion operations.

AVL Trees

An overview of AVL trees, their properties, and operations.

B-Tree

A B-Tree is a self-balancing tree data structure that maintains sorted data and allows for efficient insertion, deletion, and search operations.

Balanced Tree

A Balanced Tree is a data structure that maintains a balanced height to ensure efficient operations.

Basic Operations on Binary Trees

In this blog post, we'll cover the basic operations on binary trees, including insertion, deletion, searching, and traversal techniques, with examples in C++.

Binary Search Tree

A Binary Search Tree (BST) is a data structure that facilitates efficient searching, insertion, and deletion operations.

Binary Search Trees

In this blog post, we'll explore binary search trees (BSTs), a special type of binary tree that allows for efficient searching, insertion, and deletion of elements.

Binary Trees

In this blog post, we'll explore binary trees, a fundamental data structure in computer science that enables efficient data organization and retrieval.

Blocked Queue Data Structure

A blocked queue is a linear data structure that operates on the First In First Out (FIFO) principle but includes mechanisms to block and unblock threads when the queue is empty or full. This is particularly useful in concurrent programming.

Circular Deque Data Structure

A circular deque is a double-ended queue data structure that connects the rear and front ends to form a circular structure, allowing insertion and deletion from both ends. This structure is ideal for scenarios requiring dynamic insertion and deletion at both ends.

Circular Linked List Data Structure

A Circular Linked List is a linked data structure where the last node points back to the first node, forming a circle. This structure allows for efficient traversal and can be either singly or doubly linked.

Circular Queue Data Structure

A circular queue is a linear data structure that connects the rear and front ends to form a circular structure. This makes it efficient for resource management and suitable for scenarios where data needs to be processed in a round-robin fashion.

Circular Queue Data Structure

A circular queue is a linear data structure that operates on the First In First Out (FIFO) principle but utilizes a circular arrangement for its storage. This allows for efficient use of space and reduces the overhead associated with traditional linear queues.

Conversions

Converting between infix, postfix, and prefix notations involves understanding how operators and operands are organized.

Disjoint Set Union (DSU)

The Disjoint Set Union (DSU) algorithm efficiently manages dynamic connectivity and union-find operations.

Double-Ended Queue (Deque) Data Structure

A double-ended queue (Deque) is a linear data structure that allows insertion and deletion of elements from both ends—front and rear. This makes it a versatile data structure with efficient operations for many applications.

Doubly Linked List Data Structure

A Doubly Linked List (DLL) is a type of linked data structure that consists of nodes. Each node contains three fields: data, a pointer to the next node, and a pointer to the previous node. This structure allows traversal in both directions—forward and backward.

Doubly Linked List Data Structure (C Language)

A doubly linked list is a dynamic data structure where each node contains two pointers, one pointing to the previous node and another pointing to the next node, and one is data field. This enables efficient traversal in both directions, making it a versatile structure for scenarios where bi-directional data manipulation is needed.

Evaluation

Evaluation of expressions using a stack is a common technique, especially for handling mathematical expressions in postfix (Reverse Polish Notation) or infix notation.

Hare and Tortoise Algorithm

The Hare and Tortoise Algorithm, also known as Floyd's Cycle Detection Algorithm, is a method used to detect cycles in a linked list. It employs two pointers that move at different speeds to identify whether a cycle exists.

Hashing Algorithm

Hashing is a technique used to uniquely identify a specific object from a group of similar objects. It involves mapping large data to fixed-size values.

Heap Tree Algorithm

The Heap Tree is a specialized binary tree used for efficient priority queue operations and sorting.

Importance of Hashing

Hashing is an essential technique in data structures and algorithms used to optimize data retrieval, storage, and management through efficient key-value mapping.

Insertion in Hash Table

Insertion involves adding a key-value pair to the hash table. If the key already exists, it may update the existing value.

K-D Tree

A K-D Tree is a space-partitioning data structure for organizing points in a k-dimensional space.

Kadane's Algorithm

Kadane's Algorithm is an efficient technique used to find the maximum sum of a contiguous subarray within a one-dimensional array of integers. It is particularly useful in scenarios where the input array may contain both positive and negative numbers. By leveraging a dynamic programming approach, Kadane's Algorithm can identify the maximum sum in linear time, making it optimal for large datasets.

Linked List Approaches

Linked lists are dynamic data structures, and various approaches can be used to solve problems involving linked lists. This file outlines iterative and recursive approaches used to implement and manipulate linked lists.

Linked List Data Structure

A Linked List is a linear data structure in which elements are stored in nodes, and each node points to the next node, forming a chain. Unlike arrays, linked lists do not store elements in contiguous memory locations. Instead, each node holds two main components: data and a reference (or pointer) to the next node in the sequence. This structure allows for dynamic memory allocation, meaning the list can grow or shrink as needed without reallocating or resizing.

Method Overriding

Method overriding allows a derived class to provide a specific implementation of a method that is already defined in its base class. This feature enables runtime polymorphism in object-oriented programming.

Operator overloading

Operator overloading allows you to redefine the way operators work for user-defined types (classes and structs). It enables you to specify more intuitive ways to perform operations on objects of your classes.

Priority Queue Data Structure

A priority queue is an abstract data type similar to a regular queue or stack data structure, but with an added feature that allows each element to have a priority. In a priority queue, elements are served based on their priority rather than their order in the queue.

Priority Queue Questions

A priority queue is an abstract data type similar to a regular queue or stack data structure, but with an added feature that allows each element to have a priority. In a priority queue, elements are served based on their priority rather than their order in the queue.

Red-Black Trees

In this blog post, we'll explore Red-Black trees, a type of self-balancing binary search tree that guarantees logarithmic time complexity for search, insertion, and deletion operations.

References and Pointers in C++

Both references and pointers are powerful features in C++ that allow you to manipulate memory and create more efficient programs. Understanding the differences between them and knowing when to use each is crucial for effective C++ programming

Search in Hash Table

Search involves retrieving the value associated with a given key in the hash table.

Segment Trees

In this blog post, we'll explore Segment Trees, a powerful data structure for efficiently solving range query problems.

Splay Trees

In this blog post, we'll explore Splay Trees, a type of self-adjusting binary search tree that provides amortized logarithmic time complexity for search, insertion, and deletion operations.

Stack Data Structure

A stack is a linear data structure that follows the Last In First Out (LIFO) principle. It allows operations to be performed at one end, called the top of the stack, making it efficient for scenarios such as expression evaluation, backtracking algorithms, and function call management.

Standard Template Library

STL provides a wide variety of tools that allow C++ developers to write code that is both efficient and reusable. It abstracts away many of the complexities of data structure management and algorithm implementation, making it an essential part of modern C++ programming.

STL Algorithms

STL provides a wide variety of tools that allow C++ developers to write code that is both efficient and reusable. It abstracts away many of the complexities of data structure management and algorithm implementation, making it an essential part of modern C++ programming.

STL containers

STL provides a wide variety of tools that allow C++ developers to write code that is both efficient and reusable. It abstracts away many of the complexities of data structure management and algorithm implementation, making it an essential part of modern C++ programming.

STL Iterators

STL provides a wide variety of tools that allow C++ developers to write code that is both efficient and reusable. It abstracts away many of the complexities of data structure management and algorithm implementation, making it an essential part of modern C++ programming.

Strings

Learn about strings in JavaScript, Java, Python, and C++. Understand how to create, manipulate, and use strings effectively in programming.

Table Of Contents

Explore the world of Data Structures and Algorithms (DSA) with Algo's comprehensive learning resources. From fundamental concepts to advanced topics, Algo provides a structured pathway to help you master DSA and enhance your programming skills.

Tries (Prefix Trees examples)

In this blog post, we'll explore Tries, a powerful data structure for string-based operations like prefix searches and autocomplete.

Tries (Prefix Trees theory)

In this blog post, we'll explore Tries, a powerful data structure for string-based operations like prefix searches and autocomplete.

Tries (Prefix Trees)

In this blog post, we'll explore Tries, a powerful data structure for string-based operations like prefix searches and autocomplete.

Types of Trees

This document provides an overview of various types of trees in computer science. Understanding these tree types is essential for selecting the right data structure for your specific needs.

Update in Hash Table

Update involves modifying the value associated with an existing key in the hash table.

Welcome to Algo - Gateway to DSA Mastery!

Algo is your gateway to mastering Data Structures and Algorithms (DSA). Whether you're a coding enthusiast, a student, or a professional looking to enhance your programming skills, Algo is here to guide you through the intricate world of DSA.

What is a HashSet?

A HashSet is a data structure used to store unique elements and provides efficient insertion, deletion, and search operations.

What is Hashing and Hash Maps?

Hashing is a technique used to uniquely identify a specific object from a group of similar objects. Hash maps are data structures that implement this technique.