Programmazione di Calcolatori Lezione XXIII Il tipo di dato astratto stack Programmazione di Calcolatori: il tipo di dato astratto stack
Lo stack L’idea: LIFO: Last In First Out Programmazione di Calcolatori: il tipo di dato astratto stack
Lo stack Possibile impiego (tra gli altri): Backtracking: - gestione del processo di costruzione incrementale di soluzioni tipico del backtracking Backtracking: - tecnica algoritmica basata sulla costruzione incrementale di soluzioni attraverso una sequenza di scelte - se una scelta si rivela non corretta la costruzione della soluzione riprende dall’ultimo punto di decisione che offre almeno un’alternativa alla scelta che ha generato il fallimento (backtrack) Programmazione di Calcolatori: il tipo di dato astratto stack
Gli stack di valori di tipo T (StackT) Modello: sequenza di elementi di tipo T, o più formalmente StackT <a1, a2, …, an>, aiT, i = 1, …, n Operazioni a) InitStack: StackT Valore: alcuno Effetto: InitStack() <> Programmazione di Calcolatori: il tipo di dato astratto stack
Gli stack di valori di tipo T b) Push: StackT x T StackT Valore: alcuno Effetto: Push(<a1, …, an>, a) <a1, …, an, a> Esempio: 8 Push(<3, 1, 4>, 8) < 3, 1, 4, 8> 1 3 4 Programmazione di Calcolatori: il tipo di dato astratto stack
Gli stack di valori di tipo T c) Top: StackT T Valore: Top(<a1, …, an-1, an>) = an Effetto: alcuno Esempio: 1 3 4 Top(<3, 1, 4>) = 4 Programmazione di Calcolatori: il tipo di dato astratto stack
Gli stack di valori di tipo T d) Pop: StackT StackT x T Valore: Pop(<a1, …, an-1, an>) = an Effetto: Pop(<a1, …, an-1, an>) <a1, …, an-1> Esempio: 1 3 4 Pop(<3, 1, 4>) = 4 Programmazione di Calcolatori: il tipo di dato astratto stack
Gli stack di valori di tipo T e) EmptyStack: StackT Bool Valore: EmptyStack(<>) = True EmptyStack(<a1, … >) = False Effetto: alcuno f) ResetStack: StackT StackT Valore: alcuno Effetto: ResetStack(<a1, …, an-1, an>) <> Programmazione di Calcolatori: il tipo di dato astratto stack