La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Piles Premier arrivé, dernier servi: LIFO (Last In, First Out) Liste à usage restreint: Enlève et insère un élément seulement à un bout de la liste. Notation:

Présentations similaires


Présentation au sujet: "Piles Premier arrivé, dernier servi: LIFO (Last In, First Out) Liste à usage restreint: Enlève et insère un élément seulement à un bout de la liste. Notation:"— Transcription de la présentation:

1 Piles Premier arrivé, dernier servi: LIFO (Last In, First Out) Liste à usage restreint: Enlève et insère un élément seulement à un bout de la liste. Notation: Insérer: EMPILER (PUSH) Enlever: DÉPILER (POP) Lélément accessible est: DESSUS (TOP)

2 Pile: TDA // Pile: Type de donné abstrait template Stack { public: virtual void clear() = 0; virtual bool push(const Elem&) = 0; virtual bool pop(Elem&) = 0; virtual bool topValue(Elem&) const = 0; virtual int length() const = 0; }

3 Pile avec tableau // Implémentation avec tableau template class Astack: public Stack { private: int size; int top; Elem *listArray; public: AStack(int sz =1000){ size = sz; top = 0; listArray = new Elem[sz]; } ~AStack() { delete [] listArray; } void clear() { top = 0; }

4 Pile avec tableau(2) bool push(const Elem& item) { if (top == size) return false; else { listArray[top++] = item; return true; } } bool pop(Elem& it) { if (top == 0) return false; else {it = listArray[--top]; return true;} } bool topValue(Elem& it) const { if (top == 0) return false; else {it = listArray[top-1]; return true;} } int length() const { return top; } }

5 Pile avec liste chaînée (1) template class LStack: public Stack { private: Link * top; int size; public: LStack(int sz =DefaultListSize) { top = NULL; size = 0; } bool push(const Elem& item) { top = new Link (item, top); size++; return true; }

6 Pile avec liste chaînée(2) bool pop(Elem& it) { if (size == 0) return false; it = top->element; Link * ltemp = top->next; delete top; top = ltemp; size--; return true; } bool topValue(Elem& it) const { if (size == 0) return false; it = top->element; return true; }

7 File dattente (queue) Premier arrivé, premier servi: FIFO (First in, First Out) Liste à usage restreint: Enlève à un bout et ajoute à lautre. Notation: Insérer (Enqueue) Enlever (Dequeue) Premier élément: Avant Dernier élément: Arrière

8 Queue: Implémentation (1)

9 Queue: Implémentation (2)

10 Queue: TDA // Queue: type de donné abstrait template class Queue { public: virtual void clear() = 0; virtual bool enqueue(const Elem&) = 0; virtual bool dequeue(Elem&) = 0; virtual bool frontValue(Elem&) const = 0; virtual int length() const = 0; };

11 Queue: Tableau // Queue: Implémentation avec tableau template class AQueue: public Queue { private: int size; int front; int rear; Elem *listArray; public: AQueue(int sz =DefaultListSize) { size = sz+1; rear = 0; front = 1; listArray = new Elem[size]; } ~AQueue() { delete [] listArray; } void clear() { front = rear; }

12 Queue: Tableau bool enqueue(const Elem& it) { if (length()==size-1) return false; rear = (rear+1) % size; listArray[rear] = it; return true; } bool dequeue(Elem& it) { if (length() == 0) return false; // Empty it = listArray[front]; front = (front+1) % size; return true; }

13 Queue: Tableau bool frontValue(Elem& it) const { if (length() == 0) return false; it = listArray[front]; return true; } virtual int length() const { return ((rear+size) - front + 1) % size; } };


Télécharger ppt "Piles Premier arrivé, dernier servi: LIFO (Last In, First Out) Liste à usage restreint: Enlève et insère un élément seulement à un bout de la liste. Notation:"

Présentations similaires


Annonces Google