This is an old revision of the document!
Abstract Datatypes
1. Definiți constructori pentru un arbore binar ce poate conține ca elemente numere întregi.
2. Definiți axiome pentru următorii operatori:
size : BTree → Integer
(numărul total de valori din arbore)height : BTree → Integer
(numărul de nivele al arborelui)mirror : BTree → BTree
(arborele oglindit pe verticală, i.e. pentru orice nod, copilul stâng devine copilul drept și vice-versa)flatten : BTree → List
(lista cu toate elementele din arbore; observați că există mai multe ordini posibile)
3. Definiți constructori pentru o coadă (tip LIFO
) ce poate conține elemente de un tip arbitrar E
.
4. Definiți axiome pentru următorii operatori pe coadă:
deque : LIFO → LIFO
(coada fără primul element adăugat, i.e. cel mai vechi)top : LIFO → E
(primul, cel mai vechi adăugat, element)length : LIFO → Integer
(numărul de elemente din coadă)
5. Definiți constructori pentru un Map
cu chei de tip K
și valori de tip V
.
6. Definiți axiome pentru următorii operatori pe Map
:
get : Map × K → V
(elementul asociat cu o cheie dată)update : Map × K × V → Map
(un Map cu o nouă asociere cheie:element)exists : Map × K → Bool
(verifică dacă cheia dată are o valoare asociată)delete : Map × K → Map
(șterge cheia și valoarea asociată)