lezione 08

strutture dati

liste, nodi e gestione memoria.

livello: avanzato durata: 34 min output: lista collegata badge: c essentials

lista collegata

typedef struct Node { int v; struct Node *next; } Node;
Node *head = NULL;

struct

typedef struct {
  char name[16];
  int shots;
} Project;
Project p = {"Nova", 12};

allocazione dinamica

#include <stdlib.h>
int *buf = malloc(3 * sizeof(int));
buf[0] = 1;
free(buf);

puntatori

int value = 10;
int *ptr = &value;
printf("%d\n", *ptr);

esercizi

allocalo un buffer e libera la memoria.

int *buf = malloc(4 * sizeof(int));
buf[0] = 42;
free(buf);

panoramica

In questo capitolo su strutture dati lavoriamo su lista collegata, struct, allocazione dinamica, puntatori per creare micro-pattern riutilizzabili.

lavora in sequenza: leggi, prova, modifica gli snippet e annota i trade-off principali.

badge: c essentials

obiettivi

  • capire e applicare lista collegata in uno scenario reale
  • capire e applicare struct in uno scenario reale
  • capire e applicare allocazione dinamica in uno scenario reale
  • capire e applicare puntatori in uno scenario reale

scheda rapida

typedef struct Node { int v; struct Node *next; } Node;
Node *head = NULL;

adatta questo scheletro agli esempi della lezione.

tips

  • compila con warning elevati
  • controlla ogni return code
  • libera la memoria allocata
  • usa header guard
  • mantieni funzioni corte
  • mantieni lista collegata leggibile

tip: documenta ogni scelta architetturale.

mini progetto

gestisci un buffer dinamico in sicurezza.

  • alloca
  • usa
  • libera

output atteso: nessun leak.

checklist

  • ho eseguito gli snippet e controllato l'output
  • ho annotato almeno 2 trade-off
  • ho completato il mini progetto
  • ho salvato un riepilogo personale
start a brief