denisgruiax / design-and-analysis-of-algorithms

Solved exercises of the Design and Analysis of Algorithms class.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

design-and-analysis-of-algorithms

Solved exercises of the Design and Analysis of Algorithms class.

Warning. ⚠️

I do not guarantee the correctness of the code!

About the project. 🪴

  • ✅ All the necessary operations have been implemented.
  • ✅ They were tested with some unit tests.
  • ❌ Test coverage is not 100%.

How to improve the code:

  • 👀 Refactoring for better code readability
  • 🪜 Better algorithms (+ recursion)
  • 🔁 Better unit tests

Purpose. 🎯

The purpose of this programs is to test the ability to solve problems that consist in the basics of working with: 📚

1. Generalized trees
2. Binary Trees
3. AVL trees
4. Huffman codes
5. B trees
6. Finding Trees
7. Graphs
8. Weighted Graphs
9. Directed Graphs

Built With. ⚒️

The programs can be build with C or C++ compilers.

Getting Started. 🚀

System requirements ✅

  • Operating System: MacOS, Windows, Linux(Ubuntu for example), Windows Subsystem for Linux. (WSL)
  • Programming Language: C
  • Code Editor: Visual Studio Code

I used WSL as operating system, VSCode as code editor and to compile the code i made use of gcc compiler.

Installation. 🪜

  1. Install c/c++

    sudo apt-get install build-essential
  2. Compile from command line

    gcc -Wall app.c -o app
  3. VSCode C/C++ extesion pack

    (https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools-extension-pack)
  4. Configure VSCode to run and debug C/C++ programs inside VSCode under WSL.

    https://code.visualstudio.com/docs/cpp/config-wsl
  5. Install framework for C unit testing and run programs.

    sudo apt install check
    gcc -Wall main.c generalized-trees.c -o main
    gcc -Wall generalized-trees-test.c ../source/generalized-trees.c -o test -pthread -lcheck_pic -pthread -lrt -lm -lsubunit

Learning. 🌟

https://sites.google.com/site/razvanaciu/limbaje-formale-si-tehnici-de-compilare

Contributing. 🏗️

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Contact. ✉️

Denis Gruia

About

Solved exercises of the Design and Analysis of Algorithms class.


Languages

Language:C 100.0%