====== Analiza Amortizata 2 ====== Vom continua cu analiza amortizata inceputa in laboratorul precedent cu un ArrayList cu urmatoarele proprietati: * isi dubleaza capacitatea cand este plin (ex: avem 4 elemente intr-un ArrayList cu capacitate 4. La adaugarea celui de-al 5-lea element, capacitatea va deveni 8 - necesita o copiere de 4 element, apoi inserarea celui de-al 5-lea element). * isi injumatateste capacitatea cand este un sfert plin (ex: avem 5 elemente intr-un ArrayList de capacitate 16. La urmatoarea stergere, capacitatea va deveni 8 - necesita stergerea elementului 5, apoi copierea celor 4 elemente ramase). ==== Exercitii ==== - Aflati costul amortizat al operatiilor de inserare si stergere prin metoda agregatelor. - Aflati costul amortizat pentru k operatii de inserare si p operatii de stergere. - Aflati costul amortizat al operatiei de stergere prin: - metoda bancherului - metoda potentialelor - Bonus: Aflati costul amortizat al operatiei de inserare prin: - metoda bancherului - metoda potentialelor ===== Algebraic Data Types (ADT) ===== Consideram urmatorul ADT: Void : List Cons : E x List -> List ==== Exercitii ==== - Implementati ADT-ul in C. - Definiti axiome pentru size, add, append, reverse. - Implementati axiomele definite in C. Solutiile laboratorului se afla [[aa:lab:sol:3|aici]].