Introduction to Data Structures

Learn Introduction to Data Structures with practical examples, explanations, best practices, and real-world coding techniques.

Data structures are ways of organizing and storing data so that programs can access, modify, search, and process information efficiently. Choosing an appropriate data structure is one of the fundamental parts of designing reliable and efficient software.

Applications work with many kinds of information, including user accounts, products, transactions, messages, files, relationships, and configuration data. The way this information is organized can have a direct impact on how efficiently an application performs common operations.

Arrays, linked lists, stacks, queues, hash tables, trees, heaps, graphs, and tries are examples of data structures. Each structure is designed around different ways of storing and accessing data.

Why Do We Need Data Structures?

A program can store data in simple variables, but real applications usually need to manage collections containing hundreds, thousands, or millions of values. A suitable data structure makes those collections easier and more efficient to work with.

Consider an application that needs to check whether a user has a particular permission. Storing permissions in a structure designed for fast membership checks can be more appropriate than repeatedly scanning a long sequence.

const permissions = new Set([
  "read",
  "write",
  "delete"
]);

if (permissions.has("write")) {
  console.log("Permission granted");
}

The example illustrates an important principle: the data structure should match the operations the application performs most frequently.

What Is Data?

Before understanding data structures, it is useful to understand what is meant by data. Data is information that a program stores and processes.

Data can represent numbers, text, users, products, orders, relationships, coordinates, events, or many other kinds of information.

const username = "Alex";
const age = 28;
const skills = ["Python", "SQL", "Docker"];

As applications become more complex, individual values need to be grouped and organized. Data structures provide systematic ways to do that.

What Is a Data Structure?

A data structure is a method of organizing data so that specific operations can be performed efficiently.

Different data structures provide different capabilities. For example, an array provides direct index-based access, a stack follows the Last In, First Out principle, a queue follows First In, First Out, and a hash table is designed for efficient key-based lookup.

Data Structure Main Idea Common Use
Array Elements stored in an indexed sequence Ordered collections
Linked List Nodes connected through references Dynamic sequences
Stack Last In, First Out Undo operations and call stacks
Queue First In, First Out Task and request processing
Hash Table Key-value or hash-based storage Fast lookup
Tree Hierarchical relationships File systems and indexes
Graph Connections between entities Networks and relationships

Data Structures and Algorithms

Data structures and algorithms are closely related. A data structure determines how information is organized, while an algorithm defines a sequence of steps for solving a problem or performing an operation.

The same algorithm can behave differently depending on the data structure it operates on. Likewise, the usefulness of a data structure depends on the operations that an algorithm needs to perform.

const numbers = [10, 20, 30, 40, 50];

function findNumber(numbers, target) {
  for (const number of numbers) {
    if (number === target) {
      return true;
    }
  }

  return false;
}

console.log(findNumber(numbers, 30));

Here, the array organizes the data and the search algorithm determines how the target is located. Understanding both concepts helps developers reason about performance.

Main Categories of Data Structures

Data structures can be classified in several ways. Two commonly used classifications are linear vs non-linear and static vs dynamic.

Linear Data Structures

In a linear data structure, elements are generally organized in a sequential manner. Common examples include arrays, linked lists, stacks, and queues.

const queue = ["Request A", "Request B", "Request C"];

console.log(queue[0]);

Non-Linear Data Structures

Non-linear structures organize data using relationships that are not simply sequential. Trees and graphs are common examples.

const organization = {
  name: "Engineering",
  teams: [
    {
      name: "Backend",
      members: ["Alex", "Sam"]
    },
    {
      name: "Frontend",
      members: ["Jordan", "Taylor"]
    }
  ]
};

Hierarchical information such as an organization structure is naturally represented using tree-like relationships.

Primitive and Non-Primitive Data

Programming languages commonly provide primitive or basic data types such as numbers, characters, and Boolean values. More complex structures can be built from these values.

Arrays, lists, maps, sets, trees, and graphs are examples of structures used to organize collections or relationships between values. The exact classification terminology can vary between programming languages and textbooks.

Common Data Structures

Arrays

Arrays store elements in an indexed sequence and are useful when applications need direct access to elements by position.

const scores = [85, 92, 78, 95];

console.log(scores[2]);

Linked Lists

A linked list consists of nodes where each node stores data and a reference to another node. This structure is useful when sequential relationships between nodes are important.

const node = {
  value: 10,
  next: null
};

console.log(node.value);

Stacks

A stack follows the Last In, First Out (LIFO) principle. The most recently added element is removed first.

const stack = [];

stack.push("Page 1");
stack.push("Page 2");
stack.push("Page 3");

console.log(stack.pop());

Queues

A queue follows the First In, First Out (FIFO) principle. The element that enters first is processed first.

const queue = [];

queue.push("Request 1");
queue.push("Request 2");

const nextRequest = queue.shift();

console.log(nextRequest);

Hash Tables

Hash tables organize data around keys and are commonly used for fast average-case lookup, insertion, and deletion.

const users = new Map();

users.set("user101", "Alex");
users.set("user102", "Sam");

console.log(users.get("user101"));

Trees

Trees represent hierarchical relationships. A tree contains nodes connected through parent-child relationships.

const root = {
  value: "Root",
  children: [
    {
      value: "Child A",
      children: []
    },
    {
      value: "Child B",
      children: []
    }
  ]
};

Graphs

Graphs represent relationships between entities. They consist of vertices and edges connecting those vertices.

const graph = {
  A: ["B", "C"],
  B: ["A", "D"],
  C: ["A"],
  D: ["B"]
};

Graphs can represent networks such as roads between cities, connections between users, or dependencies between software components.

Data Structure Operations

Most data structures support a set of common operations. The exact performance of each operation depends on the structure and its implementation.

Operation Description
Access Retrieve an element or value
Search Find a specific value
Insertion Add new data
Deletion Remove existing data
Traversal Visit elements or nodes

Choosing the Right Data Structure

There is no single data structure that is optimal for every problem. The correct choice depends on the operations the application performs and the characteristics of the data.

Requirement Possible Choice
Index-based access Array
Last-added item processed first Stack
First-added item processed first Queue
Key-based lookup Hash table / Map
Hierarchical information Tree
Many-to-many relationships Graph

Data Structures and Time Complexity

One of the main reasons data structures matter is that they can change the complexity of common operations.

For example, accessing an element at a known index in an array is typically O(1), while searching an unsorted array for a value is O(n).

const numbers = [10, 20, 30, 40, 50];

const value = numbers[3]; // O(1) index access

const exists = numbers.includes(40); // O(n) search

Complexity analysis helps developers understand these differences and choose structures according to the workload.

Real-World Applications of Data Structures

Data structures appear throughout software systems, often without developers explicitly thinking about them as separate academic concepts.

  • Arrays and lists: product collections, search results, records, and batches of data.
  • Stacks: undo systems, expression processing, browser navigation, and function call management.
  • Queues: background jobs, request processing, message handling, and scheduling.
  • Hash tables: caches, dictionaries, indexes, and key-based lookups.
  • Trees: file systems, database indexes, document structures, and hierarchical menus.
  • Graphs: maps, social networks, dependency systems, and communication networks.
  • Heaps: priority queues and scheduling systems.

Data Structures in Programming Languages

Programming languages provide built-in collections and libraries that implement many common data structures.

Language Common Structures
JavaScript Array, Map, Set, Object
Python list, tuple, set, dict, deque, heapq
Java ArrayList, LinkedList, HashMap, HashSet, Queue, Deque
C# Array, List, LinkedList, Dictionary, HashSet, Stack, Queue

Learning the underlying concepts is still important because it helps developers understand why a collection behaves the way it does and when another structure may be more appropriate.

Data Structure vs Data Type

A data type describes the kind of value a variable can represent, while a data structure describes how multiple values or relationships are organized for processing.

const age = 30;                 // Number
const name = "Alex";            // String

const scores = [80, 90, 95];    // Array structure
const users = new Map();        // Map structure

The terminology and classification can vary across programming languages, but the distinction is useful when learning data structures and algorithms.

How to Learn Data Structures

A structured learning path makes data structures easier to understand because many advanced structures build on simpler concepts.

  1. Start with arrays and basic operations.
  2. Learn time and space complexity.
  3. Study strings and common string-processing techniques.
  4. Understand linked lists and node-based structures.
  5. Learn stacks and queues.
  6. Study hashing, hash tables, maps, and sets.
  7. Move to trees and tree traversal.
  8. Study binary search trees and balanced trees.
  9. Learn heaps and priority queues.
  10. Study graphs, representations, and graph traversal.
  11. Explore advanced structures such as tries, union-find, and range-query structures.
  12. Practice problems that require choosing and combining different structures.

A Simple Example of Choosing a Data Structure

Imagine an application that needs to store unique technology skills and frequently check whether a particular skill exists.

const skills = new Set([
  "JavaScript",
  "Python",
  "C#",
  "SQL"
]);

const skill = "Python";

if (skills.has(skill)) {
  console.log(skill + " is available");
}

A set fits this requirement because uniqueness and membership testing are central to the problem. The same data could be stored in an array, but the appropriate choice depends on the operations the application needs most.

Common Beginner Mistakes

  • Choosing a data structure without considering the required operations.
  • Focusing only on how data is stored and ignoring access and update performance.
  • Assuming one data structure is always faster for every operation.
  • Ignoring memory usage when comparing solutions.
  • Learning implementation syntax without understanding the underlying concept.
  • Confusing a data structure with an algorithm.
  • Ignoring edge cases such as empty collections, duplicate values, or missing elements.
  • Memorizing complexity tables without understanding why the complexities occur.

Key Takeaways

  • Data structures organize and store data for efficient processing.
  • Different data structures are designed for different access and modification patterns.
  • Arrays, linked lists, stacks, queues, hash tables, trees, heaps, graphs, and tries are important structures to learn.
  • Linear structures organize data sequentially, while non-linear structures represent more complex relationships.
  • Data structures and algorithms work together to solve computational problems.
  • Choosing the right data structure depends on the operations an application needs to perform.
  • Time and space complexity help evaluate the efficiency of data structure operations.
  • Real-world software systems use data structures for collections, lookup, scheduling, hierarchy, and relationships.
  • Understanding the underlying concepts makes it easier to use language-specific collection libraries effectively.

Code Examples

const scores = [85, 92, 78, 95];

console.log("First score:", scores[0]);
console.log("Third score:", scores[2]);
    
const stack = [];

stack.push("Page 1");
stack.push("Page 2");
stack.push("Page 3");

const lastPage = stack.pop();

console.log("Removed:", lastPage);
console.log("Remaining:", stack);
    
const queue = [];

queue.push("Request 1");
queue.push("Request 2");
queue.push("Request 3");

const nextRequest = queue.shift();

console.log("Processing:", nextRequest);
console.log("Remaining:", queue);
    
const users = new Map();

users.set("user101", {
  name: "Alex",
  role: "Developer"
});

users.set("user102", {
  name: "Sam",
  role: "Designer"
});

const user = users.get("user101");

console.log(user);
    
const skills = new Set([
  "JavaScript",
  "Python",
  "JavaScript",
  "SQL"
]);

console.log(skills);

console.log(
  "Has Python:",
  skills.has("Python")
);
    

Pro Tip

Do not choose a data structure simply because it is familiar. First identify the operations your program performs most often, such as access, search, insertion, deletion, or relationship traversal, and then choose a structure whose characteristics match those requirements.

🎨 IgKnight Docs

Master HTML, CSS, JS, Python, .NET and more with easy-to-follow lessons and practical code examples.

© 2025 IgKnight Learning Platform. All rights reserved.