Deque este o coada in care poti sa faci adaugari si stergeri la ambele capete. O poti implementa ca pe un vector V (sa zicem de dimensiune maxima NMAX), pe care retii 2 indici: start si end (capetele cozii). Vectorul va fi circular, adica elementului de indice NMAX-1 ii urmeaza cel de indice 0, iar elementul de indice 0 este precedat de cel de indice NMAX-1. Astfel,
1. pentru adaugare la stanga: V[--start]=x // daca start=0, start devine NMAX-1
2. pentru adaugare la dreapta: V[++end]=x // daca end=NMAX-1, end devine 0
3. pentru stergere la stanga: start++ // daca start=NMAX-1, start devine 0
4. pentru stergere la dreapta: end-- // daca end=0, end devine NMAX-1
Ca sa verifici daca deque-ul este vid sau nu, poti sa retii pentru start si end o valoare speciala (de ex. -1). Si de fiecare data cand trebuie sa faci o operatie din cele 4 de mai sus, faci o astfel de verificare.
O alta varianta de implementare ar fi cu liste dublu inlantuite, dar asta implica lucru cu pointeri si nu cred ca are rost sa te complici.
P.S. Explicatia nu e in Pascal, dar sper sa te descurci
![Very Happy](http://www.infoarena.ro/forum/Smileys/default/biggrin.gif)