Top Banner
Informatica Nicu Sebe – 1 / 28 Strutture Dati per Inserimento Ordinato Nicu Sebe
28

Strutture Dati per Inserimento Ordinato - disi.unitn.itdisi.unitn.it/~sebe/info/13a-liste.pdf · Esempio: Ordinamento di Numeri Esempio sugli Array Inserimento Ordinato Liste Introduzione

Feb 17, 2019

Download

Documents

vantram
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Strutture Dati per Inserimento Ordinato - disi.unitn.itdisi.unitn.it/~sebe/info/13a-liste.pdf · Esempio: Ordinamento di Numeri Esempio sugli Array Inserimento Ordinato Liste Introduzione

Informatica Nicu Sebe – 1 / 28

Strutture Dati per Inserimento Ordinato

Nicu Sebe

Page 2: Strutture Dati per Inserimento Ordinato - disi.unitn.itdisi.unitn.it/~sebe/info/13a-liste.pdf · Esempio: Ordinamento di Numeri Esempio sugli Array Inserimento Ordinato Liste Introduzione

Esempio: Ordinamento di Numeri

❖ Esempio sugliArray

❖ InserimentoOrdinato

❖ Liste❖ Introduzione aiPuntatori

Informatica Nicu Sebe – 2 / 28

● A che servono i tipi strutturati? Non bastano gli scalari?

✦ Capiamolo con un esempio...

● Problema: dato un insieme di numeri naturali, ordinarli● Ordinamento per Inserimento Diretto

1. Scorrere tutti i numeri dal secondo all’ultimo2. Per ogni numero considerato, inserirlo nel giusto

ordine fra i precedenti

● Descrizione molto informale...

✦ “Scorrere tutti i numeri”?✦ “Per ogni numero considerato”?✦ “Inserire nel giusto ordine”?

Page 3: Strutture Dati per Inserimento Ordinato - disi.unitn.itdisi.unitn.it/~sebe/info/13a-liste.pdf · Esempio: Ordinamento di Numeri Esempio sugli Array Inserimento Ordinato Liste Introduzione

Ordinamento per Inserimento - Esempio

❖ Esempio sugliArray

❖ InserimentoOrdinato

❖ Liste❖ Introduzione aiPuntatori

Informatica Nicu Sebe – 3 / 28

● Cerchiamo di capire meglio l’ordinamento perinserimento...

● ...tramite un esempio!

44 55 12 42 94 18 6 6744 55 12 42 94 18 6 6744 55 12 42 94 18 6 6712 44 55 42 94 18 6 6712 42 44 55 94 18 6 6712 42 44 55 94 18 6 6712 18 42 44 55 94 6 676 12 18 42 44 55 94 676 12 18 42 44 55 67 94

Page 4: Strutture Dati per Inserimento Ordinato - disi.unitn.itdisi.unitn.it/~sebe/info/13a-liste.pdf · Esempio: Ordinamento di Numeri Esempio sugli Array Inserimento Ordinato Liste Introduzione

Formalizziamo l’Algoritmo - 1

❖ Esempio sugliArray

❖ InserimentoOrdinato

❖ Liste❖ Introduzione aiPuntatori

Informatica Nicu Sebe – 4 / 28

● Contatore i: posizione del numero che stiamoconsiderando

● Per ogni valore di i (da 2 a n), considera i numeri conposizione < i

✦ Altro contatore j, che va da i - 1 a 1 (containdietro)

● Se il numero in posizione j e > del numero in posizionei, sposta tale numero a destra

● Se il numero in posizione j e < del numero in posizionei, ferma il contatore j ed inserisci in posizione j + 1 ilnumero che era in posizione i

Page 5: Strutture Dati per Inserimento Ordinato - disi.unitn.itdisi.unitn.it/~sebe/info/13a-liste.pdf · Esempio: Ordinamento di Numeri Esempio sugli Array Inserimento Ordinato Liste Introduzione

Formalizziamo l’Algoritmo - 2

❖ Esempio sugliArray

❖ InserimentoOrdinato

❖ Liste❖ Introduzione aiPuntatori

Informatica Nicu Sebe – 5 / 28

● Variabili: i, j. Insieme di definizione: numeri naturali● Inoltre, appoggio (intero) e numeri da ordinare...● i = 2● mentre i ≤ n

✦ appoggio = numero in posizione i✦ j = i - 1✦ mentre j > 0 e numero in posizione j > appoggio

■ numero in posizione j + 1 = numero in posizionej

■ j = j - 1

✦ i = i + 1✦ numero in posizione j + 1 = appoggio

Page 6: Strutture Dati per Inserimento Ordinato - disi.unitn.itdisi.unitn.it/~sebe/info/13a-liste.pdf · Esempio: Ordinamento di Numeri Esempio sugli Array Inserimento Ordinato Liste Introduzione

Formalizziamo l’Algoritmo - 3

❖ Esempio sugliArray

❖ InserimentoOrdinato

❖ Liste❖ Introduzione aiPuntatori

Informatica Nicu Sebe – 6 / 28

● “numero in posizione i / j”?

✦ Formalizziamo un po’ meglio questa cosa...

● Usiamo un nome per identificare tutti i numeri...

✦ Se un numero ha insieme di definizione Z, questavariabile ha insieme di definizione Zn

● ...ed identifichiamo il singolo numero tramite un indice

✦ In matematica, numeroi, numeroj✦ Ma usiamo qualche simbolo che sia meglio

rappresentabile sui computer✦ numero[i], numero[j]

Page 7: Strutture Dati per Inserimento Ordinato - disi.unitn.itdisi.unitn.it/~sebe/info/13a-liste.pdf · Esempio: Ordinamento di Numeri Esempio sugli Array Inserimento Ordinato Liste Introduzione

Formalizziamo l’Algoritmo - 4

❖ Esempio sugliArray

❖ InserimentoOrdinato

❖ Liste❖ Introduzione aiPuntatori

Informatica Nicu Sebe – 7 / 28

● Variabili: i, j ∈ N ; appoggio ∈ Z e numero ∈ Zn

● i = 2● mentre i ≤ n

✦ appoggio = numero[i]✦ j = i - 1✦ mentre j > 0 e numero[j] > appoggio

■ numero[j + 1] = numero[j]■ j = j - 1

✦ i = i + 1✦ numero[j + 1] = appoggio

Page 8: Strutture Dati per Inserimento Ordinato - disi.unitn.itdisi.unitn.it/~sebe/info/13a-liste.pdf · Esempio: Ordinamento di Numeri Esempio sugli Array Inserimento Ordinato Liste Introduzione

Array

❖ Esempio sugliArray

❖ InserimentoOrdinato

❖ Liste❖ Introduzione aiPuntatori

Informatica Nicu Sebe – 8 / 28

● numero ∈ Zn

✦ Variabile con insieme di definizione Zn

✦ Composta da n variabili con insieme di definizione Z(variabili intere)

✦ Singoli elementi accessibili come numero[i]

● Abbiamo appena scoperto gli Array!● Array: tipo strutturato composto da variabili di un tipo

semplice ripetute piu volte● Tutti gli elementi dell’array hanno lo stesso tipo

Page 9: Strutture Dati per Inserimento Ordinato - disi.unitn.itdisi.unitn.it/~sebe/info/13a-liste.pdf · Esempio: Ordinamento di Numeri Esempio sugli Array Inserimento Ordinato Liste Introduzione

Rivisitiamo L’Esempio

❖ Esempio sugliArray

❖ InserimentoOrdinato

❖ Liste❖ Introduzione aiPuntatori

Informatica Nicu Sebe – 9 / 28

● Abbiamo visto come ordinare un insieme di numeripreesistente

● Se i numeri vengono inseriti uno dopo l’altro, e possibileusare un algoritmo piu furbo?

● Algoritmo stupido:

1. Immettere n numeri uno dopo l’altro ed inserirli in unarray

2. Ordinare l’array usando inserimento diretto, selezionediretta, scambio diretto, ...

● Ma forse i numeri possono essere inseriti nell’array gia inordine?

Page 10: Strutture Dati per Inserimento Ordinato - disi.unitn.itdisi.unitn.it/~sebe/info/13a-liste.pdf · Esempio: Ordinamento di Numeri Esempio sugli Array Inserimento Ordinato Liste Introduzione

Inserimento Ordinato in un Array

❖ Esempio sugliArray

❖ InserimentoOrdinato

❖ Liste❖ Introduzione aiPuntatori

Informatica Nicu Sebe – 10 / 28

● Problema: dato un numero val ∈ n, inserirlo nellaposizione corretta di un array numeri ∈ Nn

● Possibile soluzione:

✦ Scorrere l’array da sinistra verso destra fino a che nonsi trova un numero piu grande di val

✦ Spostare a sinistra tale numero e tutti i numerisuccessivi nell’array

✦ Inserire val nel posto vuoto che si e creato

Page 11: Strutture Dati per Inserimento Ordinato - disi.unitn.itdisi.unitn.it/~sebe/info/13a-liste.pdf · Esempio: Ordinamento di Numeri Esempio sugli Array Inserimento Ordinato Liste Introduzione

Formalizziamo l’Algoritmo

❖ Esempio sugliArray

❖ InserimentoOrdinato

❖ Liste❖ Introduzione aiPuntatori

Informatica Nicu Sebe – 11 / 28

● Variabili: i, j ∈ N ; val ∈ Z e numero ∈ Zn

● i = 0● mentre i < n e numero[i] < val

✦ i = i + 1

● j = n● mentre j > i

✦ numero[j] = numero[j - 1]✦ j = j - 1

● numero[i] = val

Page 12: Strutture Dati per Inserimento Ordinato - disi.unitn.itdisi.unitn.it/~sebe/info/13a-liste.pdf · Esempio: Ordinamento di Numeri Esempio sugli Array Inserimento Ordinato Liste Introduzione

Problemi con L’Algoritmo

❖ Esempio sugliArray

❖ InserimentoOrdinato

❖ Liste❖ Introduzione aiPuntatori

Informatica Nicu Sebe – 12 / 28

● L’algoritmo mostrato nella slide precedente funziona...● Il problema iniziale e risolubile ripetendo n volte

✦ Leggi val✦ inserimento ordinato(val, numero, i)

● Ma ogni volta l’algoritmo puo dover “spostare a destra”dei numeri nell’array

✦ Se val e piu piccolo di tutti i numeri dell’array, tutti inumeri vanno spostati!!!

✦ Perdita di tempo...

● Si puo fare un inserimento ordinato senza dover spostarenumeri?

Page 13: Strutture Dati per Inserimento Ordinato - disi.unitn.itdisi.unitn.it/~sebe/info/13a-liste.pdf · Esempio: Ordinamento di Numeri Esempio sugli Array Inserimento Ordinato Liste Introduzione

Array e Inserimento Ordinato

❖ Esempio sugliArray

❖ InserimentoOrdinato

❖ Liste❖ Introduzione aiPuntatori

Informatica Nicu Sebe – 13 / 28

● L’inserimento ordinato di elementi puo essere fatto inmodo piu efficiente usando strutture dati appropriate

✦ Array: possono richiedere sempre di spostareelementi per inserirne uno in ordine

✦ Che struttura dati utilizzare?

● Problema con gli array: ordine degli elementi ed ordine dimemorizzazione sono legati fra loro

✦ Serve una struttura dati che renda l’ordine deicomponenti indipendente dalla loro posizione inmemoria

Page 14: Strutture Dati per Inserimento Ordinato - disi.unitn.itdisi.unitn.it/~sebe/info/13a-liste.pdf · Esempio: Ordinamento di Numeri Esempio sugli Array Inserimento Ordinato Liste Introduzione

Ordine e Posizione in un Array

❖ Esempio sugliArray

❖ InserimentoOrdinato

❖ Liste❖ Introduzione aiPuntatori

Informatica Nicu Sebe – 14 / 28

● Array: collezione di variabili omogenee ordinate● Indice: intero che identifica un elemento dell’array

✦ L’indice stabilisce l’ordine delle variabili dell’array(v[i] e l’i-esimo elemento dell’array v)

✦ Stabilisce la posizione in memoria di un elemento

v ∈ N d: v → v1 v2 v3 · · · vd● Serve un insieme di variabili omogenee con un

ordinamento diverso da quello stabilito dalla posizione inmemoria...

✦ Idea: ad ogni elemento dell’array associamo unvalore e l’indice del prossimo elemento secondo unordinamento indipendente dalla posizione in memoria

Page 15: Strutture Dati per Inserimento Ordinato - disi.unitn.itdisi.unitn.it/~sebe/info/13a-liste.pdf · Esempio: Ordinamento di Numeri Esempio sugli Array Inserimento Ordinato Liste Introduzione

Indice del Prossimo Elemento

❖ Esempio sugliArray

❖ InserimentoOrdinato

❖ Liste❖ Introduzione aiPuntatori

Informatica Nicu Sebe – 15 / 28

● Posizione in memoria arbitraria

✦ Posizione nell’array: ordine di inserimento✦ No necessita di spostare elementi per inserirne uno

● Ordinamento dato dagli indici al prossimo elemento● Indice al prossimo elemento: rappresentato graficamente

con una freccia

✦ v[j] viene dopo v[i]⇒ il “prossimo indice” di v[i]e j

✦ Freccia da v[i] a v[j]

9 1 5 4 11

Page 16: Strutture Dati per Inserimento Ordinato - disi.unitn.itdisi.unitn.it/~sebe/info/13a-liste.pdf · Esempio: Ordinamento di Numeri Esempio sugli Array Inserimento Ordinato Liste Introduzione

Inserimento Ordinato

❖ Esempio sugliArray

❖ InserimentoOrdinato

❖ Liste❖ Introduzione aiPuntatori

Informatica Nicu Sebe – 16 / 28

● Inserimento: basta aggiornare gli indici● Se ho due elementi consecutivi con valore 4 e 9, il

“prossimo indice” del primo punta al secondo● Se inserico un elemento con valore 7, deve andare fra

questi due...

✦ Modifico il “prossimo indice” del primo elemento perpuntare al nuovo elemento

✦ Il “prossimo indice” del nuovo elemento puntaall’elemento con valore 9

4 9

4 9

7

Page 17: Strutture Dati per Inserimento Ordinato - disi.unitn.itdisi.unitn.it/~sebe/info/13a-liste.pdf · Esempio: Ordinamento di Numeri Esempio sugli Array Inserimento Ordinato Liste Introduzione

Implementazione - Struttura “elemento”

❖ Esempio sugliArray

❖ InserimentoOrdinato

❖ Liste❖ Introduzione aiPuntatori

Informatica Nicu Sebe – 17 / 28

● Ogni elemento e caratterizzato da:

✦ Un valore (∈ Z)✦ Un indice del prossimo elemento (∈ N )

● E un tipo di dato “complesso”!!!

✦ Usiamo una struttura✦ Due campi: val ∈ Z e prossimo ∈ N ∪ {−1}

● Perche prossimo ∈ N∪{−1}?

✦ Serve un valore di prossimo per indicare “non esisteun prossimo elemento” (questo e l’ultimo elemento)

✦ Scegliamo arbitrariamente −1

Page 18: Strutture Dati per Inserimento Ordinato - disi.unitn.itdisi.unitn.it/~sebe/info/13a-liste.pdf · Esempio: Ordinamento di Numeri Esempio sugli Array Inserimento Ordinato Liste Introduzione

Implementazione - Continua

❖ Esempio sugliArray

❖ InserimentoOrdinato

❖ Liste❖ Introduzione aiPuntatori

Informatica Nicu Sebe – 18 / 28

● Array di N strutture “elemento”

✦ N : numero massimo di numeri da ordinare

● Serve inoltre una variabile primo ∈ N ∪ {−1}

✦ Inizializzata a primo = -1 (nessun numero inserito)

● Ogni volta che inserisco un numero:

✦ Lo memorizzo nel campo val del primo elementolibero dell’array

■ L’n-esimo numero e memorizzato innumero[n].val

✦ Aggiusto la variabile primo ed i campi prossimo perinserire l’elemento nel giusto ordine

Page 19: Strutture Dati per Inserimento Ordinato - disi.unitn.itdisi.unitn.it/~sebe/info/13a-liste.pdf · Esempio: Ordinamento di Numeri Esempio sugli Array Inserimento Ordinato Liste Introduzione

Implementazione - Inserimento

❖ Esempio sugliArray

❖ InserimentoOrdinato

❖ Liste❖ Introduzione aiPuntatori

Informatica Nicu Sebe – 19 / 28

● Se non ho ancora inserito numeri o il numero che stoinserendo e il piu piccolo, modifico primo, altrimenti,devo “seguire” i vari campi prossimo

● Se primo == -1 o numero[primo].val >

numero[n].val

✦ numero[n].prossimo = primo✦ primo = n

● Altrimenti,

✦ i = primo✦ Mentre i 6= -1 e numero[i].val <

numero[n].val

■ i = numero[i].prossimo

Page 20: Strutture Dati per Inserimento Ordinato - disi.unitn.itdisi.unitn.it/~sebe/info/13a-liste.pdf · Esempio: Ordinamento di Numeri Esempio sugli Array Inserimento Ordinato Liste Introduzione

Inserimento - Alcune Note

❖ Esempio sugliArray

❖ InserimentoOrdinato

❖ Liste❖ Introduzione aiPuntatori

Informatica Nicu Sebe – 20 / 28

● Nel caso “Altrimenti”, abbiamo trovato dove inserirel’elemento

✦ Fra l’elemento di indice i ed il suo precedente

● Come inserirlo?

✦ Per aggiornare correttamente il campo prossimodell’elemento precedente a numero[i]...

✦ ...Devo ricordare in qualche modo l’indice di tale“elemento precedente”!

● Il ciclo “Mentre i 6= −1 e...” sara quindi un po’ piucomplesso di quanto mostrato

Page 21: Strutture Dati per Inserimento Ordinato - disi.unitn.itdisi.unitn.it/~sebe/info/13a-liste.pdf · Esempio: Ordinamento di Numeri Esempio sugli Array Inserimento Ordinato Liste Introduzione

Descrizione Formale

❖ Esempio sugliArray

❖ InserimentoOrdinato

❖ Liste❖ Introduzione aiPuntatori

Informatica Nicu Sebe – 21 / 28

● numero[n].val = val● Se primo == -1 o numero[primo].val > val

✦ numero[n].prossimo = primo✦ primo = n

● Altrimenti,

✦ i = primo✦ Mentre i 6= −1 e numero[i].val < val

■ prev = i■ i = numero[i].prossimo

✦ numero[n].prossimo = i✦ numero[prev].prossimo = n

Page 22: Strutture Dati per Inserimento Ordinato - disi.unitn.itdisi.unitn.it/~sebe/info/13a-liste.pdf · Esempio: Ordinamento di Numeri Esempio sugli Array Inserimento Ordinato Liste Introduzione

Liste Ordinate

❖ Esempio sugliArray

❖ InserimentoOrdinato

❖ Liste❖ Introduzione aiPuntatori

Informatica Nicu Sebe – 22 / 28

● Sequenza ordinata di strutture contenenti un campovalore ed un indice del prossimo elemento della sequenza

✦ In teoria, anche piu di un campo valore!!!✦ L’indice del prossimo delemento definisce

l’ordinamento✦ “Collegamento” (link) fra due elementi consecutivi

● Abbiamo appena re-inventato le Liste!!!

✦ In particolare, liste ordinate

Page 23: Strutture Dati per Inserimento Ordinato - disi.unitn.itdisi.unitn.it/~sebe/info/13a-liste.pdf · Esempio: Ordinamento di Numeri Esempio sugli Array Inserimento Ordinato Liste Introduzione

Codice C Rivisitato

❖ Esempio sugliArray

❖ InserimentoOrdinato

❖ Liste❖ Introduzione aiPuntatori

Informatica Nicu Sebe – 23 / 28

numero [ i ] . va l = va l ;i f ( ( primo == −1) | | ( numero [ primo ] . va l > va l ) ) {

numero [ i ] . prossimo = primo ;primo = i ;

} else {i n t j ;unsigned i n t prev ;

j = primo ;while ( ( j != −1) && ( numero [ j ] . va l <= va l ) ) {

prev = j ;j = numero [ j ] . prossimo ;

}numero [ i ] . prossimo = j ;numero [ prev ] . prossimo = i ;

● Ogni singolo nodo della lista e acceduto tramite l’arraynumero...

● Esempio: numero[i].prossimo = j; numero[prev].prossimo= i

● Perche non identificare i nodi semplicemente tramite illoro indirizzo in memoria???

Page 24: Strutture Dati per Inserimento Ordinato - disi.unitn.itdisi.unitn.it/~sebe/info/13a-liste.pdf · Esempio: Ordinamento di Numeri Esempio sugli Array Inserimento Ordinato Liste Introduzione

Indirizzo di un Nodo - 1

❖ Esempio sugliArray

❖ InserimentoOrdinato

❖ Liste❖ Introduzione aiPuntatori

Informatica Nicu Sebe – 24 / 28

● Idea: invece di riferirsi ad ogni nodo usando un indice inun array...

● ...Usiamo l’indirizzo di memoria dove tale nodo ememorizzato!!!

● Si puo fare?● Abbiamo bisogno di:

1. Avere un modo per conoscere l’indirizzo dove unavariabile e memorizzata

2. Avere un tipo di variabile che possa contenereindirizzi di memoria

3. Avere un modo per conoscere il contenuto dellavariabile memorizzata ad un indirizzo specificato

Page 25: Strutture Dati per Inserimento Ordinato - disi.unitn.itdisi.unitn.it/~sebe/info/13a-liste.pdf · Esempio: Ordinamento di Numeri Esempio sugli Array Inserimento Ordinato Liste Introduzione

Indirizzo di un Nodo - 2

❖ Esempio sugliArray

❖ InserimentoOrdinato

❖ Liste❖ Introduzione aiPuntatori

Informatica Nicu Sebe – 25 / 28

● Supponiamo di poter usare gli indirizzi in memoria deinodi

● Nuovo tipo di dato, con relative operazioni:

1. Indirizzo in memoria del nodo numero[i]:i(numero[i])

2. Esiste un tipo di variabili atto a contenere gli indirizzidi un nodo. Il valore NULL indica un indirizzo nonvalido (equivalente al valore -1 per gli indici)

3. Nodo memorizzato all’indirizzo p: v(p)

Page 26: Strutture Dati per Inserimento Ordinato - disi.unitn.itdisi.unitn.it/~sebe/info/13a-liste.pdf · Esempio: Ordinamento di Numeri Esempio sugli Array Inserimento Ordinato Liste Introduzione

Indirizzo di un Nodo - 3

❖ Esempio sugliArray

❖ InserimentoOrdinato

❖ Liste❖ Introduzione aiPuntatori

Informatica Nicu Sebe – 26 / 28

● L’algoritmo e riscrivibile:

✦ Usando variabili di tipo indirizzo invece che indici interi

■ Introducendo una variabile attuale =i(numero[n]) contenente l’indirizzo dinumero[n]

■ primo e prossimo non sono piu indici mavariabili di tipo indirizzo

✦ Sostituendo numero[k] con v(k)

Page 27: Strutture Dati per Inserimento Ordinato - disi.unitn.itdisi.unitn.it/~sebe/info/13a-liste.pdf · Esempio: Ordinamento di Numeri Esempio sugli Array Inserimento Ordinato Liste Introduzione

Modifichiamo L’Algoritmo...

❖ Esempio sugliArray

❖ InserimentoOrdinato

❖ Liste❖ Introduzione aiPuntatori

Informatica Nicu Sebe – 27 / 28

● n ∈ N ; i, prev ∈ N ∪ {−1}

● numero[n].val = val

● Se primo == -1 o numero[primo].val >

val

✦ numero[n].prossimo = primo

✦ primo = n

● Altrimenti,

✦ i = primo

✦ Mentre i 6= −1 e numero[i].val <

val

■ prev = i■ i = numero[i].prossimo

✦ numero[n].prossimo = i

✦ numero[prev].prossimo = n

● n ∈ N ; i, prev ∈ {indirizzi} ∪ {NULL}

● attuale = i(numero[n]), v(attuale).val =val

● Se primo == NULL o v(primo).val > val

✦ v(attuale).prossimo = primo

✦ primo = attuale

● Altrimenti,

✦ i = primo

✦ Mentre i 6= NULL e v(i).val < val

■ prev = i■ i = v(i).prossimo

✦ v(attuale).prossimo = i

✦ v(prev).prossimo = attuale

Page 28: Strutture Dati per Inserimento Ordinato - disi.unitn.itdisi.unitn.it/~sebe/info/13a-liste.pdf · Esempio: Ordinamento di Numeri Esempio sugli Array Inserimento Ordinato Liste Introduzione

Algoritmo Modificato

❖ Esempio sugliArray

❖ InserimentoOrdinato

❖ Liste❖ Introduzione aiPuntatori

Informatica Nicu Sebe – 28 / 28

● attuale = i(numero[n]), v(attuale).val = val● Se primo == NULL o v(primo).val > val

✦ v(attuale).prossimo = primo✦ primo = attuale

● Altrimenti,

✦ i = primo✦ Mentre i 6= NULL e v(i).val < val

■ prev = i■ i = v(i).prossimo

✦ v(attuale).prossimo = i✦ v(prev).prossimo = attuale