Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Liste concatenate in C
Liste concatenate
Laboratorio di Programmazione I
Corso di Laurea in Informatica
A.A. 2016/2017
Liste concatenate
Liste concatenate in C
Liste concatenate
Liste concatenate in C
Sommario
Liste concatenate
Liste concatenate in C
Liste concatenate
Liste concatenate in C
Outline
Liste concatenate
Liste concatenate in C
Liste concatenate
Liste concatenate in C
Liste Concatenate
Finora abbiamo visto come gli array ci permettano di
rappresentare sequenze di elementi dello stesso tipo. Esempi:
array di interi, array di caratteri, ma anche array di struct.
Liste concatenate
Liste concatenate in C
Liste Concatenate
Finora abbiamo visto come gli array ci permettano di
rappresentare sequenze di elementi dello stesso tipo. Esempi:
array di interi, array di caratteri, ma anche array di struct.
Hanno dei vantaggi (accesso diretto, ossia tramite indice, e
allocazione contigua in memoria) ma anche degli svantaggi:
Liste concatenate
Liste concatenate in C
Liste Concatenate
Finora abbiamo visto come gli array ci permettano di
rappresentare sequenze di elementi dello stesso tipo. Esempi:
array di interi, array di caratteri, ma anche array di struct.
Hanno dei vantaggi (accesso diretto, ossia tramite indice, e
allocazione contigua in memoria) ma anche degli svantaggi:
hanno una dimensione fissata (a meno di non riallocare lo
spazio dinamicamente);
Liste concatenate
Liste concatenate in C
Liste Concatenate
Finora abbiamo visto come gli array ci permettano di
rappresentare sequenze di elementi dello stesso tipo. Esempi:
array di interi, array di caratteri, ma anche array di struct.
Hanno dei vantaggi (accesso diretto, ossia tramite indice, e
allocazione contigua in memoria) ma anche degli svantaggi:
hanno una dimensione fissata (a meno di non riallocare lo
spazio dinamicamente);
inserire/eliminare un elemento allinterno di un array puo
essere unoperazione costosa:
Liste concatenate
Liste concatenate in C
Liste Concatenate
Finora abbiamo visto come gli array ci permettano di
rappresentare sequenze di elementi dello stesso tipo. Esempi:
array di interi, array di caratteri, ma anche array di struct.
Hanno dei vantaggi (accesso diretto, ossia tramite indice, e
allocazione contigua in memoria) ma anche degli svantaggi:
hanno una dimensione fissata (a meno di non riallocare lo
spazio dinamicamente);
inserire/eliminare un elemento allinterno di un array puo
essere unoperazione costosa:
Liste concatenate
Liste concatenate in C
Liste Concatenate
Finora abbiamo visto come gli array ci permettano di
rappresentare sequenze di elementi dello stesso tipo. Esempi:
array di interi, array di caratteri, ma anche array di struct.
Hanno dei vantaggi (accesso diretto, ossia tramite indice, e
allocazione contigua in memoria) ma anche degli svantaggi:
hanno una dimensione fissata (a meno di non riallocare lo
spazio dinamicamente);
inserire/eliminare un elemento allinterno di un array puo
essere unoperazione costosa:
Liste concatenate
Liste concatenate in C
Liste Concatenate
Finora abbiamo visto come gli array ci permettano di
rappresentare sequenze di elementi dello stesso tipo. Esempi:
array di interi, array di caratteri, ma anche array di struct.
Hanno dei vantaggi (accesso diretto, ossia tramite indice, e
allocazione contigua in memoria) ma anche degli svantaggi:
hanno una dimensione fissata (a meno di non riallocare lo
spazio dinamicamente);
inserire/eliminare un elemento allinterno di un array puo
essere unoperazione costosa:
Liste concatenate
Liste concatenate in C
Liste Concatenate
Una lista concatenata (linked list) e una sequenza di nodi,
ciascuno dei quali memorizza un dato e contiene un riferimento
(puntatore) al nodo successivo.
Liste concatenate
Liste concatenate in C
Inserzione/Cancellazione
Inserzione:
Liste concatenate
Liste concatenate in C
Inserzione/Cancellazione
Inserzione:
Liste concatenate
Liste concatenate in C
Inserzione/Cancellazione
Inserzione:
Rimozione:
Liste concatenate
Liste concatenate in C
Liste concatenate
Liste concatenate in C
Liste concatenate
Liste concatenate in C
Liste concatenate
Liste concatenate in C
Outline
Liste concatenate
Liste concatenate in C
Liste concatenate
Liste concatenate in C
Rappresentazione in C
In C le liste vengono realizzate mediante struct. Andiamo a
definire il generico nodo:
typedef s t r u c t ll_node_struct {
/ / dato
int info ;
/ / p u n t a t o r e a l prossimo elemento
s t r u c t l l _ n o d e _ s t r u c t next ;
} ll_node ;
Liste concatenate
Liste concatenate in C
Rappresentazione in C
In C le liste vengono realizzate mediante struct. Andiamo a
definire il generico nodo:
typedef s t r u c t ll_node_struct {
/ / dato
int info ;
/ / p u n t a t o r e a l prossimo elemento
s t r u c t l l _ n o d e _ s t r u c t next ;
} ll_node ;
Liste concatenate
Liste concatenate in C
Liste concatenate
Liste concatenate in C
Liste concatenate
Liste concatenate in C
Liste concatenate
Liste concatenate in C
Inserimento in coda
Per inserire un nuovo elemento in coda, dobbiamo percorrere
tutta la lista fino ad arrivare allultimo elemento.
l l _ n o d e i n s e r t ( l l _ n o d e head , i n t v )
{
l l _ n o d e c u r r =head ;
l l _ n o d e new_node= m a l l o c ( s i z e o f ( l l _ n o d e ) ) ;
new_node> i n f o =v ;
new_node>n e x t =NULL ;
i f ( head==NULL )
/ / l i s t a vuota
r e t u r n new_node ;
w h i l e ( c u r r >n e x t ! =NULL )
/ / scorriamo l a l i s t a
c u r r = c u r r >n e x t ;
c u r r >n e x t =new_node ;
r e t u r n head ;
}
Liste concatenate
Liste concatenate in C
Liste concatenate
Liste concatenate in C
Liste concatenate
Liste concatenate in C
typedef s t r u c t ll_node_struct {
int info ;
s t r u c t l l _ n o d e _ s t r u c t next ;
} ll_node ;
i n t d e l e t e _ s u c c e s s o r ( l l _ n o d e node ) {
ll_node next_next ;
i f ( node==NULL | | node>n e x t == NULL ) r e t u r n ;
n e x t _ n e x t = ( node>n e x t )>n e x t ;
f r e e ( node>n e x t ) ;
node>n e x t = n e x t _ n e x t ;
}
Liste concatenate
Liste concatenate in C
Regole e consigli