Project developed for the Algorithms and Data Structures II subject of ICMC - University of São Paulo