Lists
A C++ data structures project implementing and rigorously testing a singly linked list and a circular vector

About This Project
The Lists project is a comprehensive C++ data structures assignment focused on implementing a templated singly linked list and a circular vector from scratch. In addition to implementing core functionality, the project emphasizes writing thorough GoogleTest test suites designed to catch buggy implementations. Both data structures support common operations such as insertion, deletion, indexing, copying, and string conversion, while ensuring memory safety through proper pointer management and AddressSanitizer validation. The project follows a milestone-based development process that integrates testing and implementation at every stage.
Key Features
- Templated singly linked list implementation
- Circular vector with O(1) push and pop at both ends
- Comprehensive GoogleTest test suites for all operations
- Copy constructor and assignment operator support
- Memory-safe implementations validated with AddressSanitizer
Technologies Used
- IDE: VSCode
- C++
- GoogleTest
- AdressSanitizer
- Makefile
Challenges & Learnings
Challenges:
One of the main challenges was debugging pointer-related issues while maintaining strict memory safety guarantees. Writing tests that reliably exposed buggy implementations required careful thought about edge cases and undefined behavior. Implementing the circular vector was particularly challenging due to index wrapping and resizing logic.
What I Learned:
This project significantly improved my understanding of low-level data structure implementation and memory management in C++. I gained hands-on experience writing high-quality tests that validate both correctness and robustness. The emphasis on AddressSanitizer reinforced best practices for avoiding memory leaks and undefined behavior.