Esercizi su code Date due code in ingresso a valori interi in ordine crescente, scrivere una funzione che restituisca una terza coda che contenga i valori.

Slides:



Advertisements
Presentazioni simili
Gli Algoritmi di ordinamento
Advertisements

Tipi di dato astratti Lista, Pila, Coda, Albero.
Algoritmi notevoli In linguaggio C.
Strutture dati lineari
Procedure e funzioni ricorsive
MATLAB.
MATLAB. Scopo della lezione Programmare in Matlab Funzioni Cicli Operatori relazionali Esercizi vari.
1 Astrazioni sui dati : Specifica ed Implementazione di Tipi di Dato Astratti in Java.
Liste di Interi Esercitazione. Liste Concatenate Tipo di dato utile per memorizzare sequenze di elementi di dimensioni variabile Definizione tipicamente.
MultiSet, Liste Ordinate
Le gerarchie di tipi.
LIP: 19 Aprile Contenuto Soluzione Compitino Tipo di dato MultiSet, estensione con sottoclasse.
Strutture dati elementari
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
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Liste.
STRUTTURE DATI e LABORATORIO II ESERCITAZIONE N°13 Heap massimo.
Esercizi su alberi binari
Tail recursion: esempio
Alberi binari Definizione della struttura dati: struct tree { };
Esercizi su alberi binari di ricerca
Esercizi su strutture dinamiche Fondamenti di Programmazione Canale AD a.a. 2009/2010.
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di Programmazione a.a.2009/2010 Prof.ssa Chiara Petrioli Corso.
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2007/2008 Corso di Programmazione 1 a.a.2007/2008 Prof.ssa Chiara Petrioli Corso di Laurea.
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab m-file m-file script script Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali.
MATLAB.
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Esercizi vari Esercizi.
Astrazioni sul controllo Iteratori. 2 Nuove iterazioni Definendo un nuovo tipo come collezione di oggetti (p. es., set) si vorrebbe disporre anche di.
Modello dati ALBERO Albero: Albero: insieme di punti chiamati NODI e linee chiamate EDGES EDGE: linea che unisce due nodi distinti Radice (root): in una.
Modello dati ALBERO Albero: Albero: insieme di punti chiamati NODI e linee chiamate EDGES EDGE: linea che unisce due nodi distinti Radice (root): in una.
Esercizi su pile Scrivere una funzione che restituisca una nuova pila che contiene i valori di una pila in ingresso in ordine inverso. La pila originale.
Esercizi su alberi binari
Algoritmo SelectSort Invariante di ciclo: ad ogni passo
1.Scrivere una funzione per cercare un numero x in una lista circolare di interi. La funzione deve restituire NULL se il numero non esiste. 2.Scrivere.
15 maggio 2002 Avvisi: Ultima lezione: mercoledì 29 maggio II Esonero: mercoledì 5 giugno, ora da stabilire.
Corso di informatica Athena – Periti Informatici
Programmazione di Calcolatori
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2007/2008 Corso di Programmazione 1 a.a.2007/2008 Prof.ssa Chiara Petrioli Corso di Laurea.
Esercizi su File.
Esercizi Liste.
Esercizi su File e Liste
Grafi Rappresentazione mediante liste di adiacenza:
Tail recursion: esempio
Esercizi La distanza di hamming tra due interi x e y si definisce come il numero di posizioni nella rappresentazione binaria di x e y aventi bit differenti.
Esercizi su alberi binari di ricerca
Alberi binari Definizione della struttura dati: struct tree { };
Ricerca sequenziale in un array di interi
1 Esempi domande di esame. 2 Dato il seguente programma #include int main(){ int *p,j=9,i=5; p=&j; *p=i; printf("%d %d %d\n", i,j,*p); scanf("%d",p);/*
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni – BCOR Ingegneria Elettronica – BELR Introduzione al C Esercitazione 5 D. Bloisi, A.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 5 Le strutture informative Corso di Informatica 2 a.a. 2003/04 Lezione 5.
Esercitazioni su liste
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Esercizio Si legga una sequenza di numeri interi da tastiera (terminatore: 0), quindi: Creare lista L1 con inserimento in testa; cons Creare lista L2 con.
Dato un vettore di reali di dimensione DIM, si inseriscano N elementi presi da tastiera, si utilizzi 0 per terminare l’inserimento. Ordinare gli elementi.
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.
Algoritmi e Strutture Dati Strutture Dati Elementari.
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA Lab 2: 20 Aprile 2015 Marco D. Santambrogio – Gianluca Durelli –
Prog2 a.a. 2001/ Albero binario di ricerca Un albero binario di ricerca é un albero binario in cui ogni nodo ha un’etichetta.
Ese 3 (del 3 Aprile 2003). Testo Progettare la specifica e l’implementazione del tipo di dato astratto modificabile Stack, supponendo che gli elementi.
LIP: 2 Maggio 2008 Classi Astratte. Cos’e’ una Classe Astratta una classe astratta e’ un particolare tipo di classe permette di fornire una implementazione.
Temp. Esercizio DataSet Generare 100 numeri interi casuali tra 1 e Visualizzare la loro media e il valore massimo. A questo scopo realizzare la.
Primo Compitino Terzo Esercizio Implementare il tipo di dato astratto Table un oggetto di tipo Table ha due colonne e un numero variabile di righe.
L’ordinamento per Selezione seleziona l’elemento con valore maggiore e lo scambia con il primo elemento del vettore. Tra gli N-1 elementi rimanenti viene.
1. Esempio di compito d’Esame 1.Indicare un esempio di caso peggiore per l’algoritmo di Quicksort. 2.Scrivere un metodo per il calcolo del predecessore.
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C Esercizi su Alberi.
Corso di Algoritmi e Strutture Dati con Laboratorio Java Collections Framework (II parte)
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:

Esercizi su code Date due code in ingresso a valori interi in ordine crescente, scrivere una funzione che restituisca una terza coda che contenga i valori delle due code disposti in ordine crescente. Scrivere una funzione che inverta l’ordine dei valori di una pila. La funzione deve modificare la pila in ingresso e non crearne una nuova. Scrivere una funzione che inverta l’ordine dei valori di una coda. La funzione deve modificare la coda in ingresso e non crearne una nuova. Scrivere una funzione ricorsiva che inverte l’ordine degli elementi di una coda. Dati n elementi e dato un intero k, il problema di Josephus consiste nell’eliminare a ogni passo il k-esimo elemento (partendo ogni volta dall’ultimo elemento eliminato). Scrivere una funzione che, presi in ingresso n, k, e l’array di elementi, restituisca l’unico elemento che rimane nella coda in ingresso al termine del processo. Utilizzare una coda. I numeri di Fibonacci sono definiti come segue: f(0) = 0, f(1) = 1, f(k) = f(k-1)+f(k-2) quando k > 1. Scrivere una funzione che, dato un intero n, stampi a video la serie di Fibonacci f(0), f(1), …, f(n). Utilizzare una coda. Scrivere la funzione pop per estrarre l’elemento in cima a una pila. Implementare la pila facendo uso di una coda. Scrivere la funzione delete per estrarre l’elemento in testa alla coda. Implementare la coda facendo uso di due pile. NOTA: scrivere sempre pre e post condizione di ogni funzione

Definizione di coda struct nodo_coda { tipo_elemento el; struct nodo_coda *next; }; struct coda struct nodo_coda *head; struct nodo_coda *tail; int size; dove tipo_elemento codifica il tipo di ogni elemento della pila.

Esercizio 1 Date due code in ingresso a valori interi in ordine crescente, scrivere una funzione che restituisca una terza coda che contenga i valori delle due code disposti in ordine crescente. Pre condizioni: La funzione prende in ingresso due code a valori interi disposti in ordine crescente Post condizioni: La funzione restituisce una terza coda contenente i valori delle due code disposti in ordine crescente

Svolgimento coda *unisci_code(coda *c1, coda *c2) { /* coda “unione” */ struct coda *c = crea_coda(); while(!coda_vuota(c1) && !coda_vuota(c2)) if (front(c1) <= front(c2)) add(c, remove(c1)); else add(c, remove(c2)); } while(!coda_vuota(c1)) add(c, remove(c1)); while(!coda_vuota(c2)) add(c, remove(c2)); return c;

Esercizio 2 Scrivere una funzione che inverta l’ordine dei valori di una pila. La funzione deve modificare la pila in ingresso e non crearne una nuova. Pre condizioni: la funzione prende in ingresso una pila p Post condizioni: L’ordine dei valori contenuti nella pila in ingresso viene invertito

Svolgimento void inverti_pila(struct pila *p) { /* coda */ struct coda *c = crea_coda(); while(!pila_vuota(p)) tipo_elemento e = pop(p); add(c, e); } while(!coda_vuota(c)) tipo_elemento e = remove(c); push(p, e);

Esercizio 4 Scrivere una funzione ricorsiva che inverte l’ordine degli elementi di una coda. Pre condizioni: la funzione prende in ingresso una coda c Post condizioni: L’ordine dei valori contenuti nella coda in ingresso viene invertito

Svolgimento void inverti_coda(struct coda *c) { tipo_elemento e; /* caso base: coda vuota */ if (coda_vuota(c)) return; /* elimina la testa della coda */ e = remove(c); /* chiamata ricorsiva */ inverti_coda(c); /* aggiunge l’elemento in coda */ add(c, e); }

Esercizio 5 Dati n elementi e dato un intero k, il problema di Josephus consiste nell’eliminare a ogni passo il k-esimo elemento (partendo ogni volta dall’ultimo elemento eliminato). Scrivere una funzione che, presi in ingresso n, k, e l’array di elementi, restituisca l’unico elemento che rimane “vivo” in ingresso al termine del processo. Utilizzare una coda. http://en.wikipedia.org/wiki/Josephus_problem Pre condizioni: la funzione prende in ingresso un intero n, un intero k e un array di elementi (supponiamo che n > 0) Post condizioni: L’ultimo elemento che rimane “vivo” nella coda

Svolgimento int Josephus(int *elementi, int n, int k) { struct coda *c = crea_coda(); tipo_elemento salvo = -1; int i; /* inserisce gli elementi nella coda */ for (i = 0; i < n; i++) add(c, elementi[i]); while(!coda_vuota(c)) /* rimette in coda i primi k-1 */ for (i = 0; i < k-1; i++) add(c, remove(c)); /* elimina il k-esimo elemento */ salvo = remove(c); } /* restituisce l’ultimo elemento rimasto in coda */ return salvo;