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
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
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; dato = info

struct StLista * succ; succ = next (puntatore al 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 1 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

ES. 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:

1. cerca la posizione dove inserire (è necessario il puntatore all’elemento precedente)

2. alloca la memoria per un nuovo elemento

3. 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); Inserisce un elemento in ordine

else insord(&((*P)->succ),T)

}

int canc(TLista *P, TAtomo T) {

if (null(*P) || car(*P)>T) return -1; cancella un elemento

if (car(*P) == T) return cdr(P);

return (canc(&((*P)->succ),T));

}

ALTRE FUNZIONI

FACOLTATIVO : liste mediante ARRAY (VETTORI)

Definizione

Dettagli
Publisher
A.A. 2015-2016
6 pagine
1 download
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.