• Non ci sono risultati.

Algoritmi e Strutture Dati

N/A
N/A
Protected

Academic year: 2021

Condividi "Algoritmi e Strutture Dati"

Copied!
4
0
0

Testo completo

(1)

16/10/2008

1

Corso di Laurea Codice insegnamento Email docente Anno accademico

Facoltàdi Scienze Matematiche Fisiche Naturali

Laboratorio di

Algoritmi e Strutture Dati

Esercitazione di Laboratorio su Stack e Code

Prof. Aniello Murano

Informatica 13917 murano@na.infn.it 2007/2008

Lezione numero: 5 Parole chiave: LIFO, FIFO

Facoltàdi Scienze Matematiche Fisiche Naturali 2

16/10/2008

Esercizio: Prima parte

Si im ple m e n t in o in Lin gu a ggio C u n a libr e r ia pe r la

ge st ion e di u n a Coda ch e possa con t e n e r e a l più

MAX elementi

(2)

16/10/2008

2

Facoltàdi Scienze Matematiche Fisiche Naturali 16/10/2008 3

Esercizio: Prima parte (cont)

Si considerino due Code Q1 e Q2, implementati con array Q1[MAX+2] e Q2[MAX+2], e riempite con interi da 1 a 9.

Si implementi la funzione ricorsiva void gioco, che prendendo in input le due Code, effettui un gioco nel modo seguente:

Ad ogni turno del gioco si considera la somma modulo 10 dei valori in testa alle due code.

Se tale somma è minore di 5, vince la prima Coda, altrimenti vince la seconda.

Ad ogni iterazione, si rimuove dalla testa della coda perdente.

Perde la Coda che finisce per prima i suoi valori.

La funzione termina indicando la coda vincente e ricostruisce la coda vincente come data in input e vuota quella perdente.

Esempio: Sia Q1=|4|7|9| e Q2 = |2|9|. Risposta: Q2 vince.

.

Facoltàdi Scienze Matematiche Fisiche Naturali 4

16/10/2008

Esercizio: Seconda parte

Si im ple m e n t in o in Lin gu a ggio C u n a libr e r ia pe r la ge st ion e di uno Stack che possa contenere al più MAX elementi Si im ple m e n t i in olt r e u n a libr e r ia in lin gu a ggio C pe r la

ge st ion e di u n a coda di M AX e le m e n t i u t iliz z a n do la libreria per Stack precedentemente implementata.

I n pa r t icola r e , qu e st a libr e r ia de ve pr e scin de r e il più possibile da l m odo in cu i son o st a t i im ple m e n t a t i gli stack

Discutere sulle eventuali cambiamenti di complessità di dequeue e enqueue in questa nuova implementa- zione rispetto alle implementazioni viste nella lezione

precedente.

(3)

16/10/2008

3

Facoltàdi Scienze Matematiche Fisiche Naturali 16/10/2008 5

Una Possibile Soluzione alla seconda parte

Siano H e T sue Stack tali che la coda sia il risultato della concatenazione dello Stack H (partendo dal Top al Bottom) con lo Stack T (dal Bottom al Top).

Nella situazione iniziale, tutti gli elementi sono posti nello Stack H dove l elemento al Top è la testa (Head) della coda, mentre quello al Bottom rappresenta la fine della coda (Tail)

Quando H è vuoto allora si svuota il rewerse di T in H. In dettaglio, per ogni elemento di T, si farà il Pop in T e il Push in H, fino a quando T non diventa vuoto.

Per cancellare un elemento dalla coda, si farà un POP dallo stack H, il quale non sarà mai vuoto a meno che l intera coda non diventi vuota.

Per inserire un elemento nella coda si fa un Push nello Stack T.

Facoltàdi Scienze Matematiche Fisiche Naturali 6

16/10/2008

Esercizio II parte (cont.)

Scrivere un programma in linguaggio C per la gestione di code e del gioco dell esercizio parte I, che possa funzionare indipendentemente da quale delle due librerie precedentemente definite venga utilizzata Attenzione: L implementazione deve avvenire

modificando al minimo il main() già implementato per la gestione delle code visto nella precedente lezione.

Domanda: Quante volte ciascun elemento sarà oggetto di un Push e di un Pop prima di lasciare la coda?

L esercizio completo va consegnato via mail entro 5 giorni lavorativi allegando un breve

documentazione (1- 2 pagine)

(4)

This document was created with Win2PDF available at http://www.win2pdf.com.

The unregistered version of Win2PDF is for evaluation or non-commercial use only.

This page will not be added after purchasing Win2PDF.

Riferimenti

Documenti correlati

Esistono due classi di memoria: automatica e statica La classe di memoria automatica è relativa a quegli oggetti locali ad un blocco (funzione o programma) che viene liberata

E responsabilità del programmatore controllare che il numero ed il tipo degli argomenti passati ad una funzione corrisponda con quanto specificato nella dichiarazione della

L Insertion Sort è uno algoritmo di ordinamento molto efficiente per ordinare un piccolo numero di elementi. L idea di ordinamento è quella che potrebbe usare un persona

L’array A[p…r] viene “suddiviso” in due sotto- array “non vuoti” A[p… q] e A[q+1…r] in cui ogni elemento di A[p…q] è minore o uguale ad ogni elemento

Lo scopo del gioco è quello di trasferire i dischi dal paletto di sinistra a quello di destra, senza mai mettere un disco su un altro di dimensione più piccola4. Regole

Si noti che l ordine in cui i piatti sono tolti dallo stack è inversa all ordine in cui essi sono stati inseriti nello stack, visto che solo il top dello stack è accessibile..

Scrivere in linguaggio C una funzione ricorsiva che preso in input L e un intero el, verifichi se esiste una occorrenza di el nella lista. Idea per la soluzione

La funzione crea_lista() crea due puntatori ad elemento, uno di nome p (puntatore al primo elemento della lista) e l'altro di nome punt (puntatore che permette di scorrere la