Translate

الاثنين، 2 ديسمبر 2013

les files

                                                                                                                                                             les files


Bien, les files maintenant !

Les opérations possibles sur les files sont :

déterminer la taille de la file ;

déterminer si la file est vide ou non ;

ajouter une nouvelle donnée ;

consulter la première donnée ;

consulter la dernière donnée ;

supprimer la première donnée.

Voyons comment implémenter cela en C++.

Plusieurs de ces fonctions ont un fonctionnement identique à celles des 

piles, je les passerai donc plus rapidement.
Pour pouvoir utiliser les files, il faut inclure l'en-tête queue.
Le début du code est donc :

1
2
#include <queue>
using namespace std;
Pour initialiser une file, il faut la déclarer comme ceci :

1
2
queue<int> f;  // file d'entiers
queue<T> g;  //remplacer T par le type voulu
Voyons maintenant les différentes fonctions.

Pour les quatre fonctions qui vont suivre, je vais juste les citer pour la 

bonne et simple raison que j'ai déjà expliqué leur fonctionnement dans la 

partie sur les piles.
La taille de la file

On utilise la fonction nomFile.size().

L'état de la file

On utilise la fonction nomFile.empty().
Rappel : cette fonction renvoie un booléen.

Ajouter un nouvel élément

On utilise la fonction nomFile.push(elt).

Supprimer la première donnée

On utilise la fonction nomFile.pop().

Pour utiliser cette fonction, la file ne doit pas être vide !
Accéder au premier et au dernier élément

Pour utiliser ces fonctions, la file ne doit pas être vide !
Pour accéder au premier élément ajouté dans la pile (donc le premier à 

sortir), on utilise la fonction nomFile.front().
Pour accéder au dernier élément ajouté dans la liste, on utilise la fonction 

nomFile.back().

Voici un exemple d'utilisation :

1
2
3
4
5
6
7
8
9
10
11
12
queue<int> i;
i.push(10);
i.push(20);
i.push(30);
i.push(40);
  
cout << "Le premier élément est : " << i.front() << endl;
cout << "Le dernier élément est : " << i.back() << endl;
  
i.pop();
cout << "Le premier élément est : " << i.front() << endl;
cout << "Le dernier élément est : " << i.back() << endl;
Le résultat est :

Le premier élément est : 10
Le dernier élément est : 40
Le premier élément est : 20
Le dernier élément est : 40
Pour mieux comprendre, on peut dessiner la file :

Image utilisateur
Comme pour les piles, le passage de paramètres se fait de préférence par 

référence.
Je termine cette partie sur les files avec deux exemples.

Le premier est une procédure d'affichage d'une file.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/* Procédure qui affiche la file donnée en paramètre. La file est passée par 

référence et déclarée const pour être sûr de ne pas la modifier, car on 

travaille sur la "vraie" file (elle n'est pas recopiée en mémoire) */
  
#include <iostream>
#include <queue>
using namespace std;
  
void afficher(const queue<int>& f)
{
        queue<int> q = f;
        while(!q.empty())
        {
                cout << q.front();
                q.pop();
                if(!q.empty())
                        cout << " , ";
        }
}
Le deuxième exemple utilise toutes les fonctions sur les files.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <queue>
#include <iostream>
using namespace std;
  
void afficher(const queue<int>& f)
{
        queue<int> q = f;
        while(!q.empty())
        {
                cout << q.front();
                q.pop();
                if(!q.empty())
                        cout << " , ";
        }
}
  
int main()
{
        queue<int> q;
         
        cout << "Apres declaration q = ";
        afficher(q);
        cout << "q.size() = " << q.size() << endl;
        cout << "q.empty() = " << boolalpha << q.empty() << endl;  /* avec 

boolalpha, suivant la valeur du booléen, ça affiche true ou false */
  
        q.push(10);
        q.push(20);
        q.push(30);
        cout << endl << "Apres ajout de 10, 20 et 30, q = ";
         
        while(!q.empty())
        {
                afficher(q);
                cout << "q.size() = " << q.size() << endl;
                cout << "q.front() = " << q.front() << endl;
                cout << "q.back() = " << q.back() << endl;
                q.pop();
                cout << endl << "Apres q.pop(), q = ";
        }
         
        afficher(q);
  
        return 0;
}
Voilà, la partie sur les files est terminée, et en plus, ça n'a même pas été 

dur !



                                                                    fin.                            

ليست هناك تعليقات:

إرسال تعليق