Schiavone & Scalas 2 In informatica, il termine stack o pila viene usato in diversi contesti per riferirsi a strutture dati le cui modalità d'accesso.

Slides:



Advertisements
Presentazioni simili
Strutture dati per insiemi disgiunti
Advertisements

1 La Standard Template Library vettori, liste, mappe, …. find, replace, reverse, sort, …. puntatori intelligenti La libreria standard STL e una libreria.
Tipi di dato astratti Lista, Pila, Coda, Albero.
Estendere i linguaggi: i tipi di dato astratti
Unità D2 Archivi e file.
Procedure In assembler.
Strutture dati lineari
STRUTTURE DATI AVANZATE Abstract Data Types Presentazione realizzata da: Mario Capurso – Altamura Michele Doronzo Aldo Lamacchia.
Le Strutture Dati M. Capurso con materiale di: G.Piccolo, A.Arcieri, Lamacchia F. Piccolo, B. Monterisi (Abstract Data Types)
1 Semantica Operazionale di un frammento di Java: lo stato.
Semantica Operazionale di un frammento di Java: lo stato
UD 3: “Le Liste” UD 4: “Pile e Code” UD 5: “Alberi e grafi”
Strutture dati elementari
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Strutture dati per.
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Tail recursion: esempio
Alberi binari Definizione della struttura dati: struct tree { };
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) JAVA: funzione di output a video Anno Accademico 2009/2010.
Algoritmi e Strutture Dati
mosaic manipola oggetti primitivi (ruota e unisci) regole:
memoria gestita staticamente:
Fondamenti di Informatica1 Ripetizioni di segmenti di codice Spesso è necessario ripetere più volte uno stesso segmento dell'algoritmo (e.g. I/O, elaborazioni.
Fondamenti di Informatica1 Realizzazione software Due fasi: 1. Specifica dell'algoritmo 1.a Definizione dei dati 1.b Definizione della modalità della loro.
Fondamenti di Informatica
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Tavole dinamiche Spesso non si sa a priori quanta memoria serve per memorizzare dei dati in un array, in una tavola hash, in un heap, ecc. Può capitare.
DISCLIC Facoltà di Lingue e Letterature Straniere Giornata di studio a conclusione del ciclo di incontri sul gioco applicato alla didattica delle lingue.
Esercizio 10.* Un cassiere vuole dare un resto di n centesimi di euro usando il minimo numero di monete. a) Descrivere un algoritmo goloso per fare ciò.
I vettore interruzioni
15 maggio 2002 Avvisi: Ultima lezione: mercoledì 29 maggio II Esonero: mercoledì 5 giugno, ora da stabilire.
Algoritmi e strutture dati
Corso di informatica Athena – Periti Informatici
Programmazione di Calcolatori
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA FINALE DEL 21 MAGGIO 2007 NOME: COGNOME: ________________________________________________________________________________.
Conversione da base 10 a base X (Utilizzo della pila)
Alberi binari Definizione della struttura dati: struct tree { };
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 9 Tipi parametrici Collezioni generiche. Strutture matematiche parametriche.
Complessità di un algoritmo
Nota (rif. alla lezione precedente): Vector vs ArrayList Le classi generiche Vector e ArrayList sono sostanzialmente equivalenti, ma: I metodi.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 5 Le strutture informative Corso di Informatica 2 a.a. 2003/04 Lezione 5.
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Pile e Code.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Strutture dati per.
Esercitazione su Vector. Permette di definire collezioni di dati generiche, che sono in grado di memorizzare elementi di ogni sottotipo di Object Definito.
AlgoLab - Pile e Code Pile e code Laboratorio di Algoritmi 02/03 Prof. Ugo de’ Liguoro.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Fondamenti di Informatica II Ingegneria Informatica (A-I) Prof. M.T. PAZIENZA a.a – 3° ciclo.
Allievi Elettrici - AA Le funzioni ricorsive in C
Algoritmi e Strutture Dati Strutture Dati Elementari.
MODULO STRUTTURE DATI FONDAMENTALI: Strutture dinamiche
Operatori di incremento e decremento
1 Analisi ammortizzata Si considera il tempo richiesto per eseguire, nel caso pessimo, una intera sequenza di operazioni. Se le operazioni costose sono.
Ese 3 (del 3 Aprile 2003). Testo Progettare la specifica e l’implementazione del tipo di dato astratto modificabile Stack, supponendo che gli elementi.
Ese 3 (del 3 Aprile 2003). Testo Progettare la specifica e l’implementazione del tipo di dato astratto modificabile Stack, supponendo che gli elementi.
1 Strutture dati. 2 Astrazione Non vogliamo sapere l’organizzazione fisica dei dati  indirizzi e celle di memoria Ci interessa solo la loro organizzazione.
Lezione X Laboratorio di Programmazione. Struttura di un programma Definizione classe e specifica (parziale) classe.hclasse.cpp main.cpp Specifica metodi.
Ese 1 e 3 (del 6 Aprile 2005). Primo Ese Si identifichino gli errori che il compilatore segnalerebbe per il seguente programma Tipi Legami tra dichiarazioni.
LIP: 11 Maggio 2007 Classi Astratte. Cos’e’ una Classe Astratta una classe astratta e’ un particolare tipo di classe permette di fornire una implementazione.
Ordinamento dei vettori (SELECTION-SORT) Ordinamento per selezione (selection- sort) Si cerca l’elemento più piccolo e si scambia con l’elemento in posizione.
1 Semantica Operazionale di un frammento di Java: intro estensione (con piccole varianti) di quella di FP | v |
LIP: 4 Maggio 2007 Interfacce. Cos’e’ una Interfaccia una interfaccia e’ un particolare tipo di classe contiene solo la specifica non ha implementazione.
1 Espressioni 4 dato che non abbiamo previsto inizializzazioni per le variabili (statiche e di istanza) all’interno delle classi, le espressioni possono.
Corso di Algoritmi e Strutture Dati con Laboratorio Tipi di dato pila e coda.
1 MODULO STRUTTURE DATI FONDAMENTALI: Strutture dinamiche classe 4° INDUSTRIALE ABACUS Ud1Strutture dati lineariTempi -Liste semplicemente puntate 3h+3h.
Corso di Informatica Applicata Introduzione Università degli studi di Cassino Corso di Laurea in Ingegneria della Produzione Industriale Ing. Saverio De.
Introduzione alla LOGICA MATEMATICA Corso di Matematica Discreta. Corso di laurea in Informatica. Prof. Luigi Borzacchini VIII. Insiemi e Strutture Dati.
Lezione n. Parole chiave: Corso di Laurea: Insegnamento: Docente: A.A Salvatore Cuomo Strutture dati di tipo astratto 19 Strutture dati,
13. Strutture dati dinamiche Ing. Simona Colucci Informatica - CDL in Ingegneria Industriale- A.A
1 MODULO STRUTTURE DATI FONDAMENTALI: Strutture dinamiche classe 4° INDUSTRIALE INFORMATICA Focus on.
Transcript della presentazione:

Schiavone & Scalas 2

In informatica, il termine stack o pila viene usato in diversi contesti per riferirsi a strutture dati le cui modalità d'accesso seguono una politica LIFO (Last In First Out) più in generale la pila è una struttura dati lineare a cui si può accedere soltanto mediante uno dei suoi capi per inserire(PUSH) e per estrarre(POP) dati. Schiavone & Scalas3 Menù

Pila Sequenziale: sequenza di locazioni adiacenti in un vettore; segue una politica LIFO per cui il primo elemento inserito è anche il primo ad essere estratto. Si inserisce sempre in testa. Quando inserisco un elemento eseguo Push e quando ne estraggo uno eseguo un’operazione di Pop. SequenzialePushPop Schiavone & Scalas4 Menù

Concatenata: successioni di nodi collegato tra loro tramite puntatori dove l’ultimo nodo non ha successori. Si accede tramite un puntatore di testa e le operazioni di inserimento ed estrazione avvengono solo in testa alla struttura dati. Concatenata Schiavone & Scalas5 Menù

Sequenziale Schiavone & Scalas6 top top  0 pila vuota top  max pila piena Menù

Concatenata Schiavone & Scalas7 PILA testa info Menù

Schiavone & Scalas8 Push 7 Push 15 Push 5Push 10 Pop Menù

Schiavone & Scalas9 Per inserire un elemento nella Pila è importante effettuare un’operazione di Push. Con questa operazione il dato inserito si troverà alla testa dello Stack e ad ogni operazione di Push il puntatore verrà incrementato 1.Controllare che la pila non sia Piena *IsFull* 2.Incrementa il puntatore 3.Inserimento di un elemento (Push) Menù

Schiavone & Scalas10 Per estrarre un elemento nella Pila è importante effettuare un’operazione di Pop. Con questa operazione il dato da estrarre si dovrà trovare alla testa dello Stack e ad ogni operazione di Pop il puntatore verrà decrementato 1.Controllare che la pila non sia Vuota *IsEmpty* 2.Estrarre l’elemento (Pop) 3.Decrementare Menù

Analisi Schiavone & Scalas11 Il programma comincia presentando un menù dove vi si possono effettuare 5 scelte che sono le seguenti: 1.inserimento elementi 2.stampa elementi 3.somma elementi 4.Pop 5.ESCI Con la prima scelta viene chiesto all’utente il numero di elementi che vuole inserire <<ne<<, dopo di che l’utente inserirà gli elementi uno alla volta. Effettuando la seconda scelta l’utente potrà visualizzare la stampa degli elementi pre-inseriti. Con la terza scelta verrà effettuata la somma algebrica degli elementi della Pila e dopo di che verrà visualizzata la somma degli elementi. Con la quarta scelta verrà estratto l’ultimo nodo inserito e richiamando la seconda funzione di stampa si potranno visualizzare gli elementi della Pila privi dell’elemento estratto. Menù

Analisi dei dati Schiavone & Scalas12 VARIABILEDESCRIZIONETIPOI/O/A SCÈ la variabile che serve per effettuare la scelta nel menù intI NEÈ il numero di elementiintI IÈ il contatore del forintI P1È la pilaPilaI/O NÈ il nodoNodoI INFOÈ il campo del nodo dove viene inserita l’informazione IntI Menù

Schiavone & Scalas 13 Flow Chart Menù

Schiavone & Scalas14 Menù

Schiavone & Scalas15 Menù

Codice Schiavone & Scalas16 Menù #include <<<<<struct<<<<< struct Nodo { int Info; Nodo *Next; }; struct Pila { Nodo *Testa; }; <<<<<<prototipi<<<<<<< void Crea(Pila &); int Testvuota(Pila); Nodo *Pop(Pila &); void Push(Pila &,Nodo *); void Stampa(Pila &); int Somma(Pila &); void main() { int sc,ne; clrscr(); Pila P1; Nodo *Temp; int Info; Crea(P1); do{ clrscr(); printf("MENU"); gotoxy(1,2); printf("1)inserimento elementi"); gotoxy(1,3); printf("2)stampa elementi"); gotoxy(1,4); printf("3)somma elementi"); gotoxy(1,5); printf("4)Pop"); gotoxy(1,6); printf("5)ESCI");

Schiavone & Scalas17 Menù switch(sc){ case 1: clrscr(); printf("quanti elementi vuoi inserire?"); scanf("%d",&ne); for(int i=1;i<=ne;i++) { Temp=new Nodo; printf("inserisci il %d ø elemento: ",i); scanf("%d",&Temp->Info); Temp->Next=NULL; Push(P1,Temp); } break; case 2: Stampa(P1); getch(); break; case 3: Stampa(P1); printf("Somma elementi= %d ",Somma(P1)); getch(); break; case 4: Nodo *Ntemp=Pop(P1); delete Ntemp; gotoxy(1,5); break; default: break; } }while(sc!=5); } <<<<<<Crea pila vuota<<<<<<< void Crea(Pila&P) { P.Testa=NULL; } <<<<<<verifica se la pila è vuota<<<<<< int TestVuota(Pila P) { getch(); return(P.Testa==0); }

Schiavone & Scalas18 <<<<<estrai un nodo POP<<<< Nodo*Pop(Pila&P) { Nodo*N=NULL; if(!TestVuota(P)) { N=P.Testa; P.Testa=(P.Testa)->Next; N->Next=NULL; } else printf("pila underflow"); return(N); } <<<<<inserisce un elemento PUSH<<< void Push(Pila &P,Nodo *N) { N->Next=P.Testa; P.Testa=N; } <<<<Stampa<<<<<<<<<<<<< void Stampa(Pila &P) { Nodo *Temp=P.Testa; while(Temp!=NULL) { printf("%d\n",Temp->Info); Temp=Temp->Next; }} Menù <<<<<somma degli elementi<<< int Somma(Pila &P) { int somma=0; Nodo*Temp=P.Testa; while(Temp!=NULL) { somma=somma+Temp->Info; Temp=Temp->Next; } return(somma); }

Schiavone & Scalas19 Menù