Estratto del documento

Liste

Ciascun nodo della lista è una struttura di due campi:

  • Valore dell’elemento
  • Un puntatore al nodo successivo della lista (NULL se ultimo elemento)

L’intera sequenza è rappresentata da un puntatore al suo primo elemento (vogliamo un’unica variabile per accedere a tutti gli elementi della sequenza). Nota: tale puntatore non è la sequenza, ma la rappresenta soltanto.

Esempio: [3, 8, 5]

Definizione struttura

typedef int TAtomo; 
int può essere anche uno struct, un float ecc.
typedef struct StLista {
    TAtomo dato;
    struct StLista * succ;
} E_lista, *TLista;

Funzioni

  • TAtomo car (TLista L); car = stampa il primo elemento
  • int null (TLista L);
  • void cons( TLista *PL, TAtomo A ); cons = inserisce un valore in prima posizione
  • int cdr( TLista *PL ); elimina il primo elemento

int null( TLista L ) { return L == NULL; }

TAtomo car( TLista L ) { return null(L) ? ERR : L->dato; }

int cdr( TLista *PL ) {

    TLista temp;
    if (null(*PL)) return 0;
    temp = *PL;
    *PL = (*PL)->succ;
    free(temp);
    return 1;

void cons( TLista *PL, TAtomo A ) {

    TLista temp;
    temp = (TLista) malloc(sizeof(ELista));
    if (temp == NULL) return;
    temp->dato = A;
    temp->succ = *PL;
    *PL = temp;

Liste ordinate

Esempio: 3 5 7 8

  • Inserimento nella lista vuota o inserimento del valore 2 nella lista L equivale ad un inserimento in testa
  • Inserimento del valore 6 nella lista L:
  • Cerca la posizione dove inserire (è necessario il puntatore all’elemento precedente)
  • Alloca la memoria per un nuovo elemento
  • Collega il nuovo elemento

Definizione

typedef int TAtomo;
typedef struct StLista {
    TAtomo dato;
    struct StLista * succ;
} ELista, *TLista;

Funzioni

  • void insord(TLista *P, TAtomo T) {
            if (null(*P) || (car(*P) > T)) 
                cons(P,T); 
            else 
                insord(&((*P)->succ),T)
        
  • int canc(TLista *P, TAtomo T) {
            if (null(*P) || car(*P) > T) return -1; 
            if (car(*P) == T) return cdr(P);
            return (canc(&((*P)->succ),T));
        

Altre funzioni

Facoltativo: liste mediante array (vettori)

Definizione

Liste semplici collegate mediante array

Funzioni

Anteprima
Vedrai una selezione di 3 pagine su 6
Appunti di informatica sulle Liste e liste di liste Pag. 1 Appunti di informatica sulle Liste e liste di liste Pag. 2
Anteprima di 3 pagg. su 6.
Scarica il documento per vederlo tutto.
Appunti di informatica sulle Liste e liste di liste Pag. 6
1 su 6
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher cb.rr95 di informazioni apprese con la frequenza delle lezioni di Fondamenti di informatica e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Catania o del prof Malgeri Michele.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community