Summary: Data Structures & ADTs (Lecture 3)
1. Introduction to Data Structures
Data structures are ways to organize data to make programs more efficient. Choosing the right data
structure can make a program run in seconds instead of days.
2. Efficiency
Efficiency means solving problems with minimal time and space. We measure performance using
Big O notation. Choosing efficient structures is crucial for scalability.
3. Abstract Data Types (ADT) vs Data Structures
• ADT: Defines what operations can be done on data. • Data Structure: Implements how the data
and operations are stored and executed physically.
4. Common Operations
• Create • Insert • Delete • Update • Search • Sort • Merge
5. Python Built-in Data Structures
• List: [1, 2, 3] — mutable, ordered.
• Tuple: (1, 2, 3) — immutable, ordered.
• Set: {1, 2, 3} — unordered, unique elements.
• Dictionary: {'a': 1, 'b': 2} — key-value pairs.
6. Stack
Stack works on LIFO (Last In First Out). Operations: - push(): add - pop(): remove - top(): view last -
is_empty()
• push(5) → [5]
• push(3) → [5, 3]
• pop() → returns 3, stack = [5]
7. Queue
Queue works on FIFO (First In First Out). Operations: - enqueue(): add - dequeue(): remove - first():
view first - is_empty()
• enqueue(5) → [5]
• enqueue(3) → [5, 3]
• dequeue() → returns 5, queue = [3]
8. Linked Lists
A Linked List is a sequence of nodes. Each node stores data and a pointer to the next node. Types:
Singly Linked, Doubly Linked. Useful for dynamic data management.
• Insert at head: new node points to old head.
• Insert at tail: old tail points to new node.
• Doubly linked: nodes have prev and next pointers.
9. Choosing the Right Structure
1. Analyze the problem. 2. Determine operations needed. 3. Choose the simplest structure that
meets requirements.
Tip: Understanding how each structure works helps you solve problems logically — not just by
memorization. Practice coding stacks, queues, and linked lists in Python to build intuition.