This repository contains comprehensive coursework, exercises, and projects for a Data Structures and Algorithms course using C++. The materials demonstrate progressive learning from basic data structures to advanced algorithms and complex problem-solving techniques.
Structured learning progression with hands-on implementations
- TimDiemTrongKhongGian3Chieu: 3D point searching algorithms
- Advanced geometric calculations
- Spatial data structure optimization
- MuaCom: Rice purchase simulation system
- Basic linked list operations
- Real-world application modeling
- ListofProvinces: Vietnam provinces management
- Doubly linked list implementation
- Population and area statistics
- Geographic data manipulation
Bai04_DecimalToBinary(StackUsingLinkedList).cpp: Number system conversionBai09_TinhGiaTriBieuThuc.cpp: Expression evaluation using stacksBai10_HoaNhac.cpp: Concert visibility problem solving
- Introduction to BST concepts and basic operations
- Tree traversal algorithms
- Advanced BST operations and balancing concepts
Bai01_CreateAHashTable(LinkedList).cpp: Hash table with chainingBai02_CreateAHashTable(LoadFactor).cpp: Load factor optimization
- Continued advanced BST topics and applications
Bai01_LoaiBoSoTrung.cpp: Duplicate removal using hash tablesBai09_DoTuyenTinhUsingArray.cpp: Linear probing implementation- Bai11_HashTable: Complete hash table project
Bai03_CacThaoTacCoBanTrenDoThiVoHuong.cpp: Basic undirected graph operationsBai06_DinhCoTenKhongBietTruocSoDinh.cpp: Dynamic vertex naming system
- Graph traversal algorithms (DFS, BFS)
- Path finding and connectivity
- Advanced graph algorithms and optimization
- Complex graph problems and real-world applications
Comprehensive problem-solving and algorithm implementation
Bai01_XuatViTriSoChanDauTien-CuoiCung.cpp: Even number position detectionBai08_KiemKe1.cpp: Inventory management system (Part 1)Bai09_KiemKe2.cpp: Advanced inventory sortingBai15_DoiMoiThanhPho.cpp: City renovation project optimization
Bai09_DaoNguocDanhSach.cpp: List reversal algorithmsBai15_NhapXuatDaThuc.cpp: Polynomial input/output systemBai16_Cong2DaThuc.cpp: Polynomial addition calculator
Bai15_ThemVaoCayBST.cpp: BST insertion algorithms- Advanced tree manipulation and balancing
Advanced data structure combinations
Bai01_BangBamNoiKet_HamInsert.cpp: Chained hash table insertionBai02_BangBamNoiKet_HamSearch.cpp: Hash table search optimizationBai03_BangBamNoiKet_HamDelete.cpp: Safe deletion in hash tablesBai04_BangBamThamDo_HamInsert.cpp: Linear probing insertionBai05_BangBamThamDo_HamSearch.cpp: Probing search algorithmsBai06_BangBamThamDo_HamDelete.cpp: Probing deletion handlingBai07_BamKep_HamInsert.cpp: Double hashing insertionBai08_BamKep_HamSearch.cpp: Double hashing search optimization
Comprehensive algorithm practice and optimization
-
LT-Search&Sort.cpp: Complete search and sorting algorithms- Binary Search, Linear Search
- Selection Sort, Insertion Sort, Quick Sort, Merge Sort, Bubble Sort
- Performance analysis and optimization
-
LT-BT-LinkedList.cpp: Advanced linked list operations- Find elements from end, middle detection
- List copying and concatenation
- Data swapping and reversal
- Subsequence detection
- Longest increasing subsequence
-
LT-BT-Stack&Queue.cpp: Stack and queue mastery- Expression evaluation and conversion
- Bracket validation systems
- Number base conversion
- Concert visibility algorithms
-
HashTable.cpp: Hash table implementation patterns- Multiple collision resolution techniques
- Load factor optimization
- Performance benchmarking
- Search & Sort Fundamentals: Basic algorithms and complexity analysis
- Linear Data Structures: Arrays, linked lists, stacks, and queues
- Problem-Solving Patterns: Real-world application modeling
- Tree Structures: Binary search trees and traversal algorithms
- Hash Tables: Collision resolution and optimization techniques
- Advanced Operations: Complex data manipulation and efficiency
- Graph Theory: Representation, traversal, and pathfinding
- Algorithm Optimization: Advanced techniques and performance tuning
- System Integration: Combining multiple data structures
- Polynomial Calculator: Complete algebraic operations using linked lists
- Expression Evaluator: Stack-based mathematical expression processing
- Number System Converter: Multi-base conversion algorithms
- Student Information: Hash table-based student record management
- Inventory Control: Advanced sorting and searching for product management
- Province Database: Geographic data processing with doubly linked lists
- City Renovation: Complex optimization using mathematical algorithms
- Concert Visibility: Stack-based geometric problem solving
- Graph Applications: Real-world network and connectivity problems
- Compiler: GCC/G++ with C++11 standard or higher
- Debugger: GDB for debugging support
- IDE: Visual Studio Code with C++ extensions
- Build System: CodeBlocks project files included
Each directory includes:
.vscode/launch.json: Debug configuration for VS Code*.cbp: CodeBlocks project files- Build scripts for compilation
- External console output configuration
# Navigate to specific exercise directory
cd "inclass/[Inclass06] Stack and Queue"
# Compile with GCC
g++ -std=c++11 -g -Wall source_file.cpp -o output
# Run with debugging
gdb ./output
# Or use VS Code integrated debugging (F5)- Linear: Arrays, Linked Lists, Stacks, Queues
- Non-Linear: Binary Search Trees, Graphs
- Hash-Based: Hash Tables with various collision resolution methods
- Search: Linear, Binary, Hash-based searching
- Sort: Bubble, Selection, Insertion, Quick, Merge sorting
- Graph: DFS, BFS, pathfinding algorithms
- Mathematical: Expression evaluation, number conversion
- Divide and Conquer: Merge sort, binary search applications
- Dynamic Programming: Optimization problems
- Greedy Algorithms: Local optimization strategies
- Backtracking: Constraint satisfaction problems
Progressive Mastery: Each section builds systematically from fundamental concepts to advanced applications, ensuring comprehensive understanding of both theoretical foundations and practical implementation skills in data structures and algorithms.