/little-huff

Primary LanguageCMIT LicenseMIT

Practical work for AB2

Huffman Project - file compactor (or affectionately named Little Huff)

In computer science and information theory, a Huffman code is a particular type of optimal prefix code that is commonly used for lossless data compression. The process of finding or using such a code proceeds by means of Huffman coding, an algorithm developed by David A. Huffman while he was a Sc.D. student at MIT, and published in the 1952 paper "A Method for the Construction of Minimum-Redundancy Codes".

Learn more here

This project is being developed jointly during the discipline data structure 2019.1 by the students:

The following libraries were developed to make the code simpler to understand, each library dealing with a different data type or with functions that have a common goal:

  1. Hash Table (hash.h)
  2. Priority Queue (priority_queue.h)
  3. Double Linked List
  4. Tree (huffman_tree.h)

Programming language, compilation and execution

The program is being implemented in the programming language C obeying the following criteria:

  • code under the ANSI C standard;
  • using the gcc compiler;
  • external libraries will be delivered along with the code;

For the compilation and execution of the program, the following commands will be used:

  • Compilation of the project:
gcc -g main.c -o main -w
  • Execution of the project:
./main

Operational System (OS)

The project is being developed in the GNU/Linux operating system and tested on GNU/Linux and Windows.

  • Distribution Ubuntu 15.10 or higher
  • Distribution Windows 8 or higher

Users of other operating systems can use VirtualBox to install Ubuntu for free.

In short, the project will have treatment for other operating systems, however there will be no guarantee to run the same way it will run in the Linux environment.

Disclaimer

This material was prepared based on the README.md made by Prof. André Lage Freitas and is licensed under the MIT Massachusetts Institute of Technology license.