• Non ci sono risultati.

Segmento codice Segmento dati Segmento stack Heap Info pNext NODO PSEUDOCODIFICA LISTA DINAMICA COSTITUITA DA UNA SERIE DI NODI

N/A
N/A
Protected

Academic year: 2021

Condividi "Segmento codice Segmento dati Segmento stack Heap Info pNext NODO PSEUDOCODIFICA LISTA DINAMICA COSTITUITA DA UNA SERIE DI NODI"

Copied!
7
0
0

Testo completo

(1)

Autore: Prof. Rio Chierego (e-mail: [email protected] - sito web: www.riochierego.it)

PSEUDOCODIFICA LISTA DINAMICA COSTITUITA DA UNA SERIE DI NODI

ALGORITMO ListaSerieNodiDinamica TIPO NODO = RECORD

Info : INT

pNext: PUNTATORE A NODO FINE RECORD

PROCEDURA main( )

pTesta, pCur, PNew: PUNTATORE A NODO i: INT

continua: BOOL risp . CHAR INIZIO

Scrivi (“Vuoi inserire un nodo?”) Leggi (risp)

i  1

Continua  FALSO RIPETI

SE (i = 1) AND (risp = ‘S’) ALLORA

Alloca (pNew, DimensioneDi (NODO)) (1) SE (pNew ≠ NULL)

ALLORA

Leggi (pNewInfo) pCur  pNew (2) pTesta  pCur (3) continua  VERO

ALTRIMENTI

Continua  FALSO FINE SE

ALTRIMENTI SE (risp = ‘S’) ALLORA

Alloca (pNew, DimensioneDi (NODO)) (4) SE (pNew ≠ NULL)

ALLORA

Leggi (pNewInfo)

(pCurpNext)  pNew (5) pCur  pNew (6)

ALTRIMENTI continua  FALSO FINE SE

FINE SE FINE SE SE (risp = ‘S’) ALLORA

/* Richiesta successiva utente */

Scrivi (“Vuoi inserire un nodo?”) Leggi (risp)

i  i + 1 FINE SE

FINCHE’ (risp != ‘S’) SE (continua = VERO) ALLORA

(pCur  pNext)  NULL FINE SE

(6) (4)

(3) (2)

(7) (5)

(1)

pTesta

Segmento codice Segmento dati

pNew pCur

Segmento stack Heap

0000111 110100010010100101010 1101010 001000101101010101010 0010110 100101110111110101010 0010101 111110100101111010101 1101101 110101110101011101011

Info pNext

NODO

(2)

Autore: Prof. Rio Chierego (e-mail: [email protected] - sito web: www.riochierego.it) STAMPA LISTA

SE (continua = VERO) ALLORA

DEALLOCA LISTA

FINE SE FINE

/* visualizzazione della lista */

pCur  pTesta (1) MENTRE (pCur ≠ NULL) ESEGUI Scrivi (pCur  Info)

pCur  (pCur pNext) (2) FINE MENTRE

(2) (1)

pTesta

Segmento codice Segmento dati

pCur

Segmento stack Heap

0000111 110100010010100101010 1101010 001000101101010101010 0010110 100101110111110101010 0010101 111110100101111010101 1101101 110101110101011101011

/* deallocazione della lista */

pCur  pTesta (1) MENTRE (pCur ≠ NULL) ESEGUI pTesta  (pCurpNext) (2) Dealloca (pCur) (3) pCur  pTesta (4) FINE MENTRE

(3)

(2) (4)

(1)

pTesta

Segmento codice Segmento dati

pCur

Segmento stack Heap

0000111 110100010010100101010 1101010 001000101101010101010 0010110 100101110111110101010 0010101 111110100101111010101 1101101 110101110101011101011

/* visualizzazione alternativa della lista */

pCur  pTesta

MENTRE (pCur ≠ NULL) ESEGUI Scrivi ((*pCur).Info)

pCur  ((*pCur).pNext) FINE MENTRE

/* deallocazione alternativa della lista */

pCur  pTesta

MENTRE (pCur ≠ NULL) ESEGUI pTesta  ((*pCur).pNext) Dealloca (pCur)

pCur  pTesta FINE MENTRE

(3)

Autore: Prof. Rio Chierego (e-mail: [email protected] - sito web: www.riochierego.it) RICERCA ELEMENTO IN UNA LISTA

pos : INT ele: INT trovato: BOOL

……….

SE (continua = VERO) ALLORA

FINE SE FINE

/* ricerca elemento in una lista */

trovato  FALSO Leggi (ele) i  0 pos  i

pCur  pTesta

MENTRE (trovato = FALSO) AND (pCur != NULL) ESEGUI i  i + 1

SE (ele = (pCurInfo)) ALLORA

trovato = VERO pos = i

FINE SE

pCur  (pCur  pNext) FINE MENTRE

/* Gestione del messaggio all’utente */

SE (trovato = VERO) ALLORA

Scrivi (“Elemento trovato in posizione”) Scrivi (pos)

ALTRIMENTI

Scrivi (“Elemento non trovato”) FINE SE

(4)

Autore: Prof. Rio Chierego (e-mail: [email protected] - sito web: www.riochierego.it) RICERCA ELEMENTO IN UNA LISTA CON CONTEGGIO DELLE SUE OCCORRENZE

ele: INT trovato. BOOL

……….

SE (continua = VERO) ALLORA

FINE SE FINE

/* ricerca elemento in una lista con conteggio delle sue occorrenze

*/

trovato  FALSO Leggi (ele) i  0

pCur  pTesta

MENTRE (pCur != NULL) ESEGUI i  i + 1

SE (ele = (pCurInfo)) ALLORA

trovato = VERO i  i + 1

FINE SE

pCur  (pCur  pNext) FINE MENTRE

/* Gestione del messaggio all’utente */

SE (trovato = VERO) ALLORA

Scrivi (“Elemento trovato un numero di volte pari a ”) Scrivi (i)

ALTRIMENTI

Scrivi (“Elemento non trovato”) FINE SE

(5)

Autore: Prof. Rio Chierego (e-mail: [email protected] - sito web: www.riochierego.it)

FLOW-CHART

(6)

Autore: Prof. Rio Chierego (e-mail: [email protected] - sito web: www.riochierego.it)

(7)

Autore: Prof. Rio Chierego (e-mail: [email protected] - sito web: www.riochierego.it)

Riferimenti

Documenti correlati

Qualora Syngenta adotti termini formali per definire la reazione di piante nei confronti di parassiti e patogeni e la reazione a stress abiotici, Syngenta sarà tenuta ad informare

Combinando e incrociando le capacità del disco di Placido dell’Atlas, per la superficie anteriore delle cornea, e le proprietà tomografiche del Visante, per la mappa pachimetrica

E’ possibile (ed apparirà da subito estremamente conveniente) introdurre nuove funzionalità nella pseudocodifica dedicate ESCLUSIVAMENTE agli ARRAY MONODIMENSIONALI

//Vettore di 5 elementi..

(a) supponiamo di denire il parallelogramma come un quadrilatero che ha in centro di simmetria (chiamiamo O tale centro); allora, se A, B, C e D sono nell'ordine i vertici

Si esegue singolarmente il traffico mobile a 10Gb/s e si attendono risultati che esprimano sia parametri minimi di latenza e sia di throughput tali da poter

maggiore della metà à à à di AB, traccio di AB, traccio di AB, traccio di AB, traccio un arco..

come si può facilmente notare, il perimetro delle varie spezzate ottenute congiungendo i punti delle suddivisioni successive di ordine 2, del segmento AB e dei lati del