Course Code: CSE 2101
Course Title: Data Structures
Credit Hours: 3.00 (3 hours per week)
Textbook: Data Structures with C by Seymour Lipschutz (Schaum's Outlines)
This repository contains comprehensive materials, implementations, and resources for the Data Structures course. The course provides an in-depth study of fundamental and advanced data structures, their operations, and algorithmic analysis.
graph TB
%% Styles
classDef phase fill:#f1f2f6,stroke:#cbd5e0,stroke-width:2px,color:#2d3436
classDef start fill:#e17055,stroke:#333,stroke-width:2px,color:white
classDef endNode fill:#2d3436,stroke:#333,stroke-width:2px,color:white
classDef topic fill:#74b9ff,stroke:#0984e3,stroke-width:1px,color:black
Start([π Start Journey]):::start
subgraph P1 [Phase 1: Foundations]
direction TB
C1[Intro & Terms]:::topic --> C2[Preliminaries]:::topic
C2 --> C3[String Processing]:::topic
end
subgraph P2 [Phase 2: Linear Structures]
direction TB
C4[Arrays & Records]:::topic --> C5[Linked Lists]:::topic
C5 --> C6[Stacks & Queues]:::topic
end
subgraph P3 [Phase 3: Advanced Structures]
direction TB
C7[Trees & Heaps]:::topic --> C8[Graphs]:::topic
C8 --> C9[Sorting & Searching]:::topic
end
End([π Mastery Achieved]):::endNode
%% Flow
Start --> P1
P1 --> P2
P2 --> P3
P3 --> End
%% Style Subgraphs
class P1,P2,P3 phase
- Internal data representation
- Abstract data types
- Elementary asymptotic analysis: growth of functions, O, Ξ© and Ξ notations
- Elementary data structures: arrays, linked lists, stacks, queues, trees and tree traversals, graphs and graph representations, heaps, binary search trees
- Sorting algorithms: heap sort, merge sort, quick sort
- Data structures for set operations
- Advanced data structures: balanced binary search trees (AVL trees, red-black trees, splay trees, skip lists), advanced heaps (Fibonacci heaps, binomial heaps)
- Hashing
graph TD
%% Styles
classDef root fill:#2d3436,stroke:#dfe6e9,stroke-width:4px,color:white
classDef linear fill:#0984e3,stroke:#74b9ff,stroke-width:2px,color:white
classDef nonlinear fill:#d63031,stroke:#ff7675,stroke-width:2px,color:white
classDef sub fill:#00b894,stroke:#55efc4,stroke-width:1px,color:white
Root((Data Structures)):::root
%% Branches
Root --> Linear([Linear DS]):::linear
Root --> NonLinear([Non-Linear DS]):::nonlinear
%% Linear Nodes
Linear --> Arr[Arrays]:::sub
Linear --> LL[Linked Lists]:::sub
Linear --> St[Stacks]:::sub
Linear --> Qu[Queues]:::sub
%% Non-Linear Nodes
NonLinear --> Trees[Trees]:::sub
NonLinear --> Graphs[Graphs]:::sub
%% Sub-details
Trees --- Bin[Binary Trees]:::sub
Trees --- Heaps[Heaps]:::sub
Graphs --- Dir[Directed]:::sub
Graphs --- Undir[Undirected]:::sub
| Md. Jahidul Islam |
|---|
| Chairman, Department of Computer Science and Engineering |
| Chandpur Science and Technology University |
Click to view topics
- 1.1 Introduction
- 1.2 Basic Terminology; Elementary Data Organization
- 1.3 Data Structures
- 1.4 Data Structure Operations
- 1.5 Algorithms: Complexity, Time-Space Tradeoff
Click to view topics
- 2.1 Introduction
- 2.2 Mathematical Notation and Functions
- 2.3 Algorithmic Notation
- 2.4 Control Structures
- 2.5 Complexity of Algorithms
- 2.6 Other Asymptotic Notations (Ξ©, O, Ξ)
- 2.7 Subalgorithms
- 2.8 Variables, Data Types
Click to view topics
- 3.1 Introduction
- 3.2 Basic Terminology
- 3.3 Storing Strings
- 3.4 Character Data Type
- 3.5 String Operations
- 3.6 Word Processing
- 3.7 Pattern Matching Algorithms
Click to view topics
- 4.1 Introduction
- 4.2 Linear Arrays
- 4.3 Representation of Linear Arrays in Memory
- 4.4 Traversing Linear Arrays
- 4.5 Inserting and Deleting
- 4.6 Sorting; Bubble Sort
- 4.7 Searching; Linear Search
- 4.8 Binary Search
- 4.9 Multidimensional Arrays
- 4.10 Pointers; Pointer Arrays
- 4.11 Records; Record Structures
- 4.12 Representation of Records in Memory; Parallel Arrays
- 4.13 Matrices
- 4.14 Sparse Matrices
Click to view topics
- 5.1 Introduction
- 5.2 Linked Lists
- 5.3 Representation of Linked Lists in Memory
- 5.4 Traversing a Linked List
- 5.5 Searching a Linked List
- 5.6 Memory Allocation; Garbage Collection
- 5.7 Insertion into a Linked List
- 5.8 Deletion from a Linked List
- 5.9 Header Linked Lists
- 5.10 Two-way Lists
Click to view topics
- 6.1 Introduction
- 6.2 Stacks
- 6.3 Array Representation of Stacks
- 6.4 Linked Representation of Stacks
- 6.5 Arithmetic Expressions; Polish Notation
- 6.6 Quicksort, an Application of Stacks
- 6.7 Recursion
- 6.8 Towers of Hanoi
- 6.9 Implementation of Recursive Procedures by Stacks
- 6.10 Queues
- 6.11 Linked Representation of Queues
- 6.12 Deques
- 6.13 Priority Queues
Click to view topics
- 7.1 Introduction
- 7.2 Binary Trees
- 7.3 Representing Binary Trees in Memory
- 7.4 Traversing Binary Trees
- 7.5 Traversal Algorithms using Stacks
- 7.6 Header Nodes; Threads
- 7.7 Binary Search Trees
- 7.8 Searching and Inserting in Binary Search Trees
- 7.9 Deleting in a Binary Search Tree
- 7.10 AVL Search Trees
- 7.11 Insertion in an AVL Search Tree
- 7.12 Deletion in an AVL Search Tree
- 7.13 m-way Search Trees
- 7.14 Searching, Insertion and Deletion in an m-way Search Tree
- 7.15 B Trees
- 7.16 Searching, Insertion and Deletion in a B-tree
- 7.17 Heap; Heapsort
- 7.18 Path Lengths; Huffman's Algorithm
- 7.19 General Trees
Click to view topics
- 8.1 Introduction
- 8.2 Graph Theory Terminology
- 8.3 Sequential Representation of Graphs; Adjacency Matrix; Path Matrix
- 8.4 Warshall's Algorithm; Shortest Paths
- 8.5 Linked Representation of a Graph
- 8.6 Operations on Graphs
- 8.7 Traversing a Graph
- 8.8 Posets; Topological Sorting
Click to view topics
- 9.1 Introduction
- 9.2 Sorting
- 9.3 Insertion Sort
- 9.4 Selection Sort
- 9.5 Merging
- 9.6 Merge-Sort
- 9.7 Radix Sort
- 9.8 Searching and Data Modification
- 9.9 Hashing
To use the code examples in this repository, you need:
- C Compiler (GCC recommended)
- Text Editor or IDE (VS Code, Code::Blocks, Dev-C++, or any C IDE)
- Basic understanding of C programming
-
Clone the repository
git clone https://github.com/M-F-Tushar/CSE-2101-Data-Structures.git cd CSE-2101-Data-Structures -
Compile a C program
gcc filename.c -o output ./output
-
Navigate to specific chapters
cd Chapter-04-Arrays-Records-Pointers/examples
Each chapter folder contains:
- README.md: Detailed explanation of concepts covered in that chapter
- examples/: Working code examples demonstrating the concepts
- exercises/: Practice problems with solutions
# Navigate to a chapter
cd Chapter-05-Linked-Lists/examples
# Compile the program
gcc linked_list_operations.c -o linked_list
# Run the program
./linked_listBy the end of this course, students will be able to:
- Understand and implement various data structures in C
- Analyze algorithm complexity using Big O, Omega, and Theta notations
- Choose appropriate data structures for specific problems
- Implement searching and sorting algorithms
- Work with advanced data structures like AVL trees, B-trees, and heaps
- Apply graph algorithms for real-world problems
- Design efficient algorithms with optimal time-space tradeoffs
- Seymour Lipschutz - Data Structures with C (Schaum's Outlines)
- Thomas H. Cormen et al. - Introduction to Algorithms (CLRS)
- Ellis Horowitz & Sartaj Sahni - Fundamentals of Data Structures in C
- Robert Sedgewick - Algorithms in C
Contributions are welcome! Here's how you can help:
- Fork the repository
- Create a new branch (
git checkout -b feature/improvement) - Make your changes
- Commit your changes (
git commit -m 'Add some feature') - Push to the branch (
git push origin feature/improvement) - Open a Pull Request
- Follow the existing code structure and naming conventions
- Add comments to explain complex logic
- Test your code before submitting
- Update documentation if necessary
- Write clear commit messages
- Chapter 1: Introduction and Overview
- Chapter 2: Preliminaries
- Chapter 3: String Processing
- Chapter 4: Arrays, Records and Pointers
- Chapter 5: Linked Lists
- Chapter 6: Stacks, Queues, Recursion
- Chapter 7: Trees
- Chapter 8: Graphs and Their Applications
- Chapter 9: Sorting and Searching
Note: Currently, 4 chapters have been completed. The repository will be updated as the course progresses.
Mahir Faysal Tusher
- π§ Email: www.mahirfaysaltushar@gmail.com
- π GitHub: @M-F-Tushar
- π Location: Chandpur, Bangladesh
This project is licensed under the MIT License - see the LICENSE file for details.
- Seymour Lipschutz for the excellent textbook
- Course instructors and teaching assistants
- Fellow students for discussions and collaboration
- Open source community for inspiration
Made with β€οΈ for Data Structures learners
β Star this repository if you find it helpful! β