Welcome to my C Programming Practice Repository! This repository is a collection of projects and exercises that I am using to practice and improve my skills in the C programming language. The focus areas include working with pointers, structs, and implementing data structures like linked lists and trees. Additionally, I am practicing creating tests to ensure my code is robust and covers all possible edge cases.
- Pointers: Exercises and examples demonstrating the use of pointers in C, including pointer arithmetic, pointer to pointer, and dynamic memory allocation.
- Structs: Projects showcasing the use of structs for organizing complex data, including nested structs and arrays of structs.
- Data Structures:
- Linked Lists: Implementation of singly linked lists, doubly linked lists, and circular linked lists, along with common operations such as insertion, deletion, and traversal.
- Trees: Implementation of binary trees, binary search trees, and other tree structures, including tree traversal algorithms (in-order, pre-order, post-order).
- Tests: Test cases are written in the main method to verify the correctness of whatever is implemented. This includes tests for edge cases and common scenarios.
- Deepen Understanding of Pointers: Gain a thorough understanding of pointers and their applications in C programming.
- Master Structs: Learn how to effectively use structs to manage and manipulate complex data.
- Implement Data Structures: Build and understand fundamental data structures such as linked lists and trees.
- Develop Testing Skills: Create comprehensive tests to ensure code reliability and correctness.
- Clone the Repository:
git clone https://github.com/yourusername/c-programming-practice.git
- Navigate to Desired Section: Each section has its own directory. Navigate to the appropriate directory to explore the exercises and projects.
- Compile the Code: Use a C compiler (e.g.,
gcc
) to compile and run the programs. For example,gcc pointers/example.c -Wall -Werror -o example
to compile a file. - Run Tests: Run tests check the correctness of the implementations by running the object files and reading the outputs. To include your own cases, follow the patterns in the main function and add your own cases!
This repository is primarily for my personal learning, but contributions are welcome! If you have suggestions for new exercises, improvements to the existing code, or additional unit tests, feel free to add them to the Wiki.