File FIFO fondée sur un tableau dynamique en C#
Objectif : nous implantons en C# une structure de file FIFO (First In First Out) fondée sur l'utilisation d'un objet de tableau dynamique de classse ArrayList. Nous construisons une pile LIFO de chaînes de caractères.Il existe en C# une classe Queue dans "System.Collections.Queue" qui représente une collection d'objet de type FIFO, ici et à titre pédagogique, nous implanterons une classe FIFO contenant une instance de classe de tableau dynamique. La classe concernée se dénomme ArrayList, elle hérite de la classe object et implémente les interfaces IList, ICollection, IEnumerable, ICloneable
( public class ArrayList : IList, ICollection, IEnumerable, ICloneable )
Rappel des spécifications d'une pile LIFO :
![]()
Opérateurs de base sur une file FIFO :
sommet pointe vers l'élément en tête de file, queue pointe vers l'élément en fin de file.
retirer ( ] Xn, Xn-1,..., X1, X0] ) --> file = ] Xn, Xn-1,..., X1 ] , X0
ajouter( ] Xn, Xn-1,..., X1, X0] , Xn+1 ) -->file = ] Xn+1, Xn, Xn-1,..., X1, X0 ]
Premier( ] Xn, Xn-1,..., X1, X0] ) = X0
EstVide( ] Xn, Xn-1,..., X1, X0] ) = false
EstVide( ] ] ) = trueNotre file FIFO doit contenir des noms (chaînes de caractères).
Proposition de squelette de classe C# algorithmique :
Nous utilisons un objet de classe ArrayList pour représenter une pile LIFO, elle sera passée comme paramètre dans les méthodes de la classe LIFO qui travaillent sur cet objet :
static bool EstVide (ArrayList F) tester si la file F est vide static void ajouter(ArrayList F, string x) Ajouter en queue de file F le nom x. static string retirer(ArrayList F) Retirer le nom en tête de file F. static string Premier(ArrayList F) Renvoyer le nom en tête de file F. static void initialiserFile(ArrayList F) Remplir la file F avec des noms. static void VoirFifo(ArrayList F) Afficher séquentiellement le contenu de la file F. Complétez la classe et ses méthodes :
class ApplicationFifo
{
static bool EstVide (ArrayList F)
{
.........
}
static void ajouter(ArrayList F, string x)
{
.........
}
static string retirer(ArrayList F)
{
.........
}
static string Premier(ArrayList F)
{
.........
}
static void initialiserFile(ArrayList FileFifo)
{
.........
}
static void VoirFifo(ArrayList F)
{
.........
}
static void Main(string[] Args)
{
ArrayList Fifo = new ArrayList( );
initialiserFile(Fifo);
VoirFifo(Fifo);
System.Console.WriteLine("premier = "+Premier(Fifo));
System.Console.Read();
}
}
Voici ci-dessous les méthodes principalement utiles à la manipulation d'une telle fle FIFO:
Classe ArrayList :
public virtual int Add( object value ); Ajoute un l'objet value à la fin de l'ArrayList. public virtual void Insert(int index, object value); Insère un élément dans l'ArrayList à l'index spécifié. public virtual void Clear(); Supprime tous les éléments de l'ArrayList. public virtual int Count ; Obtient le nombre d'éléments réellement contenus dans ArrayList : propriété en lecture seulement. public virtual void Remove(object obj); Supprime la première occurrence d'un objet spécifique de l'ArrayList. public virtual void RemoveAt(int i); Supprime l'élément de rang i de l'ArrayList. ArrayList Table;
Table[i] = ....;Accès en lecture et en écriture à un élément quelconque de rang i du tableau par Table[i]