Skip to content

Latest commit

 

History

History
112 lines (77 loc) · 3.83 KB

File metadata and controls

112 lines (77 loc) · 3.83 KB

English | Italiano

C++ Data Structures — LASD Libraries 24-25

Implementazioni C++20 delle librerie di strutture dati per il corso di Laboratorio di Algoritmi e Strutture Dati (LASD) dell'Università degli Studi di Napoli Federico II, Anno Accademico 2024/2025.

Il repository contiene le soluzioni degli Esercizi 1 e 2, proposti come prove intermedie del corso. Tutte le strutture sono implementate da zero — nessun contenitore STL.


Strutture dati implementate

Esercizio 1 — Contenitori di base

Interfacce dei contenitori

  • Container, ClearableContainer, ResizableContainer
  • TestableContainer, TraversableContainer, MappableContainer (con varianti PreOrder/PostOrder)
  • DictionaryContainer, OrderedDictionaryContainer
  • LinearContainer, MutableLinearContainer, SortableLinearContainer

Strutture lineari

  • Vector / SortableVector — vettore ridimensionabile e ordinabile
  • List — lista concatenata singola

Insiemi ordinati

  • SetVec — insieme ordinato basato su Vector
  • SetLst — insieme ordinato basato su List

Esercizio 2 — Heap e coda di priorità

  • Heap / HeapVec — interfaccia heap e implementazione su array basata su SortableVector
  • PQ / PQHeap — interfaccia coda di priorità e implementazione basata su HeapVec

L'Esercizio 2 include ed estende il codice dell'Esercizio 1.


Struttura del progetto

cpp-data-structures/
├── Librerie_Da_Consegnare/
│   ├── Exercise1/
│   │   ├── container/        # interfacce di base dei contenitori (traversable, mappable, dictionary, linear)
│   │   ├── vector/           # Vector e SortableVector
│   │   ├── list/             # List concatenata
│   │   ├── set/              # SetVec e SetLst
│   │   ├── zlasdtest/        # suite di test ufficiale del corso
│   │   ├── zmytest/          # suite di test personalizzata
│   │   ├── main.cpp          # entry point CLI (scelta della suite di test)
│   │   └── makefile
│   └── exercise2/
│       ├── container/        # contenitori di base aggiornati
│       ├── vector/           # Vector e SortableVector aggiornati
│       ├── list/             # List aggiornata
│       ├── set/              # SetVec e SetLst aggiornati
│       ├── heap/             # Heap e HeapVec
│       ├── pq/               # PQ e PQHeap
│       ├── zlasdtest/        # suite ufficiale (Esercizio 1 + 2)
│       ├── zmytest/          # suite personalizzata (Esercizio 1 + 2)
│       ├── main.cpp
│       └── makefile
└── README.md

Compilazione ed esecuzione

Requisiti: g++ con supporto C++20 e GNU make.

git clone https://github.com/kiyx/cpp-data-structures.git
cd cpp-data-structures/Librerie_Da_Consegnare/exercise2
make        # g++ -Wall -pedantic -O3 -std=c++20 -fsanitize=address
./main

L'eseguibile main mostra un menu da riga di comando:

  • 0 — esegue la suite di test ufficiale (lasdtest)
  • 1 — esegue la suite di test personalizzata (mytest)
  • qualsiasi altro numero — esce

Per pulire i file di build:

make clean

Usa Exercise1/ invece di exercise2/ per compilare il solo Esercizio 1.


Testing

Sono incluse due suite di test:

  1. zlasdtest — la suite ufficiale del corso LASD, con test basic e full per ogni struttura.
  2. zmytest — una suite personalizzata con copertura aggiuntiva (casi limite, operazioni miste, stress test).

Entrambe compilano con AddressSanitizer attivo (-fsanitize=address) per intercettare errori di memoria durante i test.


Note

  • Ogni esercizio è un progetto makefile autocontenuto.
  • L'Esercizio 2 riutilizza la libreria dell'Esercizio 1 e aggiunge heap e coda di priorità.