Page d'Accueil

Opérations sur une collection

 

Ajouter un article

L'opération principale que vous pouvez effectuer sur une liste est d'ajouter un nouvel article à la liste, puisqu'une liste est fondamentalement vide quand elle commence. Afin d'indiquer que vous voulez ajouter un article à la liste, vous pouvez créer une méthode qui reçoit un article comme argument. Pour le type de retour, vous avez deux principales options. Puisque le rôle principal de cette méthode est d'ajouter un nouvel article, qui échoue difficilement si vous le mettez corectement en application, elle peut être définie en tant que vide. Alternativement, vous pouvez lui faire renvoyer la position du nouvel article dans la liste. Voici un exemple :

public class Numbers
{
    int size;
    Number Sample;
    public Number Head;

    public Numbers()
    {
        size = 0;
        Head = null;
    }

    public int Count
    {
        get { return size; }
    }

    public int Add(Number NewItem)
    {
        Number Sample = new Number();

        Sample = NewItem;
        Sample.Next = Head;
        Head = Sample;
        return size++;
    }
}
 

Étude pratiqueÉtude pratique : Ajouter des articles à une collection

  1. Changez le fichier FlowerInventory.cs comme suit :
     
    using System;
    
    namespace FlowerShop4
    {
        public abstract class AFlower
        {
            protected int items;
    
            public AFlower()
            {
                items = 0;
            }
    
            public int Count
            {
                get { return items; }
            }
    
            public abstract int Add(Flower obj);
        }
    
        public class FlowerInventory : AFlower
        {
            public Flower Head;
            public Flower Inventory;
    
            public FlowerInventory()
            {
                Head = null;
            }
    
            public override int Add(Flower NewFlower)
            {
                Flower Sample = new Flower();
    
                Sample = NewFlower;
                Sample.Next = Head;
                Head = Sample;
                return items++;
            }
        }
    }
  2. Accédez au Program.cs et le changer comme suit :
     
    using System;
    
    namespace FlowerShop4
    {
        public class Program
        {
            static int Main(string[] args)
            {
                FlowerInventory flowers = new FlowerInventory();
                Flower nice;
    
                nice = new Flower();
                nice.Type = FlowerType.Lilies;
                nice.Color = FlowerColor.White;
                nice.Arrangement = FlowerArrangement.Bouquet;
                nice.UnitPrice = 39.95M;
                flowers.Add(nice);
    
                nice = new Flower();
                nice.Type = FlowerType.Daisies;
                nice.Color = FlowerColor.Mixed;
                nice.Arrangement = FlowerArrangement.Bouquet;
                nice.UnitPrice = 40.50M;
                flowers.Add(nice);
    
                nice = new Flower();
                nice.Type = FlowerType.Carnations;
                nice.Color = FlowerColor.Lavender;
                nice.Arrangement = FlowerArrangement.Any;
                nice.UnitPrice = 34.85M;
                flowers.Add(nice);
    
                nice = new Flower();
                nice.Type = FlowerType.Roses;
                nice.Color = FlowerColor.Pink;
                nice.Arrangement = FlowerArrangement.Bouquet;
                nice.UnitPrice = 29.95M;
                flowers.Add(nice);
    
                nice = new Flower();
                nice.Type = FlowerType.Daisies;
                nice.Color = FlowerColor.Yellow;
                nice.Arrangement = FlowerArrangement.Vase;
                nice.UnitPrice = 29.95M;
                flowers.Add(nice);
    
                return 0;
            }
        }
    }
       
    Lilies
    Daisies
    Carnation
    Roses
    Daisies
     
  3. Enregistrez tout

Recherche d'un article

Une fois qu'une liste existe, l'utilisateur peut l'explorer. Une des opérations effectuées sur des articles est de localiser et rechercher un. Pour ce faire, vous pouvez créer une méthode qui prend comme argument un index. La méthode examinerait l'argument quant au nombre d'articles dans la liste pour s'assurer que la valeur de l'argument est dans la gamme des articles courants de la liste. Si le nombre est si bas ou trop haut, la méthode peut renvoyer nulle ou 0. Si le nombre est dans la gamme, la méthode peut renvoyer l'article à cette position. Voici un exemple:

public class Numbers
{
    int size;
    Number Sample;
    public Number Head;

    public Numbers()
    {
        size = 0;
        Head = null;
    }

    public int Count
    {
        get { return size; }
    }

    public int Add(Number NewItem)
    {
        Number Sample = new Number();

        Sample = NewItem;
        Sample.Next = Head;
        Head = Sample;
        return size++;
    }

    public Number Retrieve(int Position)
    {
        Number Current = Head;

        for (int i = Count - 1; i > Position && Current != null; i--)
            Current = Current.Next;
        return Current;
    }
}

Étude pratiqueÉtude pratique : Recherche des articles d'une collection

  1. Accédez au fichier FlowerInventory.cs et ajoutez la méthode suivante :
     
    using System;
    
    namespace FlowerShop4
    {
        public abstract class AFlower
        {
            protected int items;
    
            public AFlower()
            {
                items = 0;
            }
    
            public int Count
            {
                get { return items; }
            }
    
            public abstract int Add(Flower obj);
            public abstract Flower Get(int index);
        }
    
        public class FlowerInventory : AFlower
        {
            public Flower Head;
            public Flower Inventory;
    
            public FlowerInventory()
            {
                Head = null;
            }
    
            public override int Add(Flower NewFlower)
            {
                Flower Sample = new Flower();
    
                Sample = NewFlower;
                Sample.Next = Head;
                Head = Sample;
                return items++;
            }
    
            public override Flower Get(int index)
            {
                Flower Current = Head;
    
                for(int i = Count - 1;
                    i > index && Current != null;
                    i--)
                    Current = Current.Next;
                return Current;
            }
        }
    }
  2. Accédez au fichier Program.cs et le changer comme suit :
     
    using System;
    
    namespace FlowerShop4
    {
        public class Program
        {
            static int Main(string[] args)
            {
                FlowerInventory flowers = new FlowerInventory();
                Flower nice;
    
                nice = new Flower();
                nice.Type = FlowerType.Lilies;
                nice.Color = FlowerColor.White;
                nice.Arrangement = FlowerArrangement.Bouquet;
                nice.UnitPrice = 39.95M;
                flowers.Add(nice);
    
                nice = new Flower();
                nice.Type = FlowerType.Daisies;
                nice.Color = FlowerColor.Mixed;
                nice.Arrangement = FlowerArrangement.Bouquet;
                nice.UnitPrice = 40.50M;
                flowers.Add(nice);
    
                nice = new Flower();
                nice.Type = FlowerType.Carnations;
                nice.Color = FlowerColor.Lavender;
                nice.Arrangement = FlowerArrangement.Any;
                nice.UnitPrice = 34.85M;
                flowers.Add(nice);
    
                nice = new Flower();
                nice.Type = FlowerType.Roses;
                nice.Color = FlowerColor.Pink;
                nice.Arrangement = FlowerArrangement.Bouquet;
                nice.UnitPrice = 29.95M;
                flowers.Add(nice);
    
                nice = new Flower();
                nice.Type = FlowerType.Daisies;
                nice.Color = FlowerColor.Yellow;
                nice.Arrangement = FlowerArrangement.Vase;
                nice.UnitPrice = 42.75M;
                flowers.Add(nice);
    
                Console.WriteLine("//=//=//=//=//=//=//=//=//=//=//=//=//=//=//");
                Console.WriteLine("Total: {0} flower items in current inventory",
                    flowers.Count);
                Console.WriteLine("--------------------------------------------");
                Console.WriteLine("Inventory Summary");
                for (int i = 0; i < flowers.Count; i++)
                {
                    Console.WriteLine("------------------------");
                    Console.WriteLine("Flower Information");
                    Console.WriteLine("Type:        {0}", flowers.Get(i).Type);
                    Console.WriteLine("Color:       {0}", flowers.Get(i).Color);
                    Console.WriteLine("Arrangement: {0}",
    			 flowers.Get(i).Arrangement);
                    Console.WriteLine("Unit Price:  {0:F}",
    			 flowers.Get(i).UnitPrice);
                }
                Console.WriteLine("//=//=//=//=//=//=//=//=//=//=//=//=//=//=//");
    
                return 0;
            }
        }
    }
  3. Exécutez l'application pour regarder le résultat :
     
    //=//=//=//=//=//=//=//=//=//=//=//=//=//=//
    Total: 5 flower items in current inventory
    --------------------------------------------
    Inventory Summary
    ------------------------
    Flower Information
    Type:        Lilies
    Color:       White
    Arrangement: Bouquet
    Unit Price:  39.95
    ------------------------
    Flower Information
    Type:        Daisies
    Color:       Mixed
    Arrangement: Bouquet
    Unit Price:  40.50
    ------------------------
    Flower Information
    Type:        Carnations
    Color:       Lavender
    Arrangement: Any
    Unit Price:  34.85
    ------------------------
    Flower Information
    Type:        Roses
    Color:       Pink
    Arrangement: Bouquet
    Unit Price:  29.95
    ------------------------
    Flower Information
    Type:        Daisies
    Color:       Yellow
    Arrangement: Vase
    Unit Price:  42.75
    //=//=//=//=//=//=//=//=//=//=//=//=//=//=//
    Press any key to continue . . .
  4. Fermez la fenêtre DOS

Suppression d'un article

Supprimer un article consiste à l'enlever de la liste. Il y a deux approches principales que vous pouvez utiliser. Vous pouvez simplement demander à la classe de supprimer un article. Dans ce cas-ci, c'est habituellement l'article à l'extrémité qui est supprimée. Si vous faites ceci, assurez vous d'effectuer d'autres opérations courantes telles que décrémenter le compte d'articles dans la liste. Voici un exemple :

public class Numbers
{
    . . . No Change

    public bool Delete()
    {
        if (Head == null)
        {
            Console.WriteLine("The list is empty");
            return false;
        }

        Number Current;

        Current = Head.Next;
        Head.Next = Current.Next;
        size--;
        return true;
    }
}
 

Une autre technique utilisée pour supprimer un article consiste à indiquer la position de l'article à supprimer. Pour ce faire, vous pouvez passer un argument comme la position désirée. La méthode vérifierait la gamme des valeurs de la liste courante. Si la position indiquée est au delà de la gamme appropriée, la méthode peut renvoyer faux, 0, ou nulle, selon la façon dont vous la créez.

 
 

Étude pratiqueÉtude pratique : Recherche des articles d'une collection

  1. Accédez au fichier FlowerInventory.cs et ajoutez la méthode suivante :
     
    using System;
    
    namespace FlowerShop4
    {
        public abstract class AFlower
        {
            protected int items;
    
            public AFlower()
            {
                items = 0;
            }
    
            public int Count
            {
                get { return items; }
            }
    
            public abstract int Add(Flower obj);
            public abstract Flower Get(int index);
            public abstract bool Delete();
        }
    
        public class FlowerInventory : AFlower
        {
            public Flower Head;
            public Flower Inventory;
    
            public FlowerInventory()
            {
                Head = null;
            }
    
            public override int Add(Flower NewFlower)
            {
                Flower Sample = new Flower();
    
                Sample = NewFlower;
                Sample.Next = Head;
                Head = Sample;
                return items++;
            }
    
            public override Flower Get(int index)
            {
                Flower Current = Head;
    
                for(int i = Count - 1;
                    i > index && Current != null;
                    i--)
                    Current = Current.Next;
                return Current;
            }
    
            public override bool Delete()
            {
                if (Head == null)
                {
                    Console.WriteLine("The inventory is empty");
                    return false;
                }
    
                Flower Current;
    
                Current = Head.Next;
                Head.Next = Current.Next;
                items--;
                return true;
            }
        }
    }
  2. Accédez au fichier Program.cs et le changer comme suit :
     
    using System;
    
    namespace FlowerShop4
    {
        public class Program
        {
            static int Main(string[] args)
            {
                FlowerInventory flowers = new FlowerInventory();
                Flower nice;
    
                nice = new Flower();
                nice.Type = FlowerType.Lilies;
                nice.Color = FlowerColor.White;
                nice.Arrangement = FlowerArrangement.Bouquet;
                nice.UnitPrice = 39.95M;
                flowers.Add(nice);
    
                nice = new Flower();
                nice.Type = FlowerType.Daisies;
                nice.Color = FlowerColor.Mixed;
                nice.Arrangement = FlowerArrangement.Bouquet;
                nice.UnitPrice = 40.50M;
                flowers.Add(nice);
    
                nice = new Flower();
                nice.Type = FlowerType.Carnations;
                nice.Color = FlowerColor.Lavender;
                nice.Arrangement = FlowerArrangement.Any;
                nice.UnitPrice = 34.85M;
                flowers.Add(nice);
    
                nice = new Flower();
                nice.Type = FlowerType.Roses;
                nice.Color = FlowerColor.Pink;
                nice.Arrangement = FlowerArrangement.Bouquet;
                nice.UnitPrice = 29.95M;
                flowers.Add(nice);
    
                nice = new Flower();
                nice.Type = FlowerType.Daisies;
                nice.Color = FlowerColor.Yellow;
                nice.Arrangement = FlowerArrangement.Vase;
                nice.UnitPrice = 42.75M;
                flowers.Add(nice);
    
                Console.WriteLine("//=//=//=//=//=//=//=//=//=//=//=//=//=//=//");
                Console.WriteLine("Total: {0} flower items in current inventory",
                    flowers.Count);
                Console.WriteLine("--------------------------------------------");
                Console.WriteLine("Inventory Summary");
                for (int i = 0; i < flowers.Count; i++)
                {
                    Console.WriteLine("------------------------");
                    Console.WriteLine("Flower Information");
                    Console.WriteLine("Type:        {0}",
                                      flowers.Get(i).Type);
                    Console.WriteLine("Color:       {0}",
                                      flowers.Get(i).Color);
                    Console.WriteLine("Arrangement: {0}",
                 flowers.Get(i).Arrangement);
                    Console.WriteLine("Unit Price:  {0:F}",
                 flowers.Get(i).UnitPrice);
                }
                Console.WriteLine("//=//=//=//=//=//=//=//=//=//=//=//=//=//=//");
    
                flowers.Delete();
                flowers.Delete();
    
                Console.WriteLine("//=//=//=//=//=//=//=//=//=//=//=//=//=//=//");
                Console.WriteLine("Total: {0} flower items in current inventory",
                    flowers.Count);
                Console.WriteLine("--------------------------------------------");
                Console.WriteLine("Inventory Summary");
                for (int i = 0; i < flowers.Count; i++)
                {
                    Console.WriteLine("------------------------");
                    Console.WriteLine("Flower Information");
                    Console.WriteLine("Type:        {0}",
                                      flowers.Get(i).Type);
                    Console.WriteLine("Color:       {0}",
                                      flowers.Get(i).Color);
                    Console.WriteLine("Arrangement: {0}",
                 flowers.Get(i).Arrangement);
                    Console.WriteLine("Unit Price:  {0:F}",
                 flowers.Get(i).UnitPrice);
                }
                Console.WriteLine("//=//=//=//=//=//=//=//=//=//=//=//=//=//=//");
    
                return 0;
            }
        }
    }
  3. Exécutez l'application pour regarder le résultat :
     
    //=//=//=//=//=//=//=//=//=//=//=//=//=//=//
    Total: 5 flower items in current inventory
    --------------------------------------------
    Inventory Summary
    ------------------------
    Flower Information
    Type:        Lilies
    Color:       White
    Arrangement: Bouquet
    Unit Price:  39.95
    ------------------------
    Flower Information
    Type:        Daisies
    Color:       Mixed
    Arrangement: Bouquet
    Unit Price:  40.50
    ------------------------
    Flower Information
    Type:        Carnations
    Color:       Lavender
    Arrangement: Any
    Unit Price:  34.85
    ------------------------
    Flower Information
    Type:        Roses
    Color:       Pink
    Arrangement: Bouquet
    Unit Price:  29.95
    ------------------------
    Flower Information
    Type:        Daisies
    Color:       Yellow
    Arrangement: Vase
    Unit Price:  42.75
    //=//=//=//=//=//=//=//=//=//=//=//=//=//=//
    //=//=//=//=//=//=//=//=//=//=//=//=//=//=//
    Total: 3 flower items in current inventory
    --------------------------------------------
    Inventory Summary
    ------------------------
    Flower Information
    Type:        Lilies
    Color:       White
    Arrangement: Bouquet
    Unit Price:  39.95
    ------------------------
    Flower Information
    Type:        Daisies
    Color:       Mixed
    Arrangement: Bouquet
    Unit Price:  40.50
    ------------------------
    Flower Information
    Type:        Daisies
    Color:       Yellow
    Arrangement: Vase
    Unit Price:  42.75
    //=//=//=//=//=//=//=//=//=//=//=//=//=//=//
    Press any key to continue . . .
  4. Fermer la fenêtre de DOS

Localiser un article

Une des opérations à peine exécuté sur une liste est de trouver un article. C'est parce que si vous demandez à une liste de localiser un article particulier, vous devez fournir autant d'informations que possible. Probablement la manière la plus avantageuse dont vous pouvez faire ceci est de définir complètement un article et de le passer à la liste. Seulement si l'article est trouvé dans la liste il serait reconnu.

Voici un exemple :

using System;

public class Number
{
    public double Item;
    public Number Next;
}

public class Numbers
{
    int size;
    Number Sample;
    public Number Head;

    public Numbers()
    {
        size = 0;
        Head = null;
    }

    public int Count
    {
        get { return size; }
    }

    public int Add(Number NewItem)
    {
        Number Sample = new Number();

        Sample = NewItem;
        Sample.Next = Head;
        Head = Sample;
        return size++;
    }

    public Number Retrieve(int Position)
    {
        Number Current = Head;

        for (int i = Count - 1; i > Position && Current != null; i--)
            Current = Current.Next;
        return Current;
    }

    public bool Delete()
    {
        if (Head == null)
        {
            Console.WriteLine("The list is empty");
            return false;
        }

        Number Current;

        Current = Head.Next;
        Head.Next = Current.Next;
        size--;
        return true;
    }

    public bool Find(Number toFind)
    {
        Number Current = new Number();

        if (toFind == null)
            return false;

        for (Current = Head; Current != null; Current = Current.Next)
        {
            if( Current.Item  == toFind.Item )
                return true;
        }

        return false;
    }
}

public class Program
{
    static int Main(string[] args)
    {
        Number  real;
        Numbers reals = new Numbers();

        real = new Number();
        real.Item = 2974.03;
        reals.Add(real);

        real = new Number();
        real.Item = 748.25;
        reals.Add(real);

        real = new Number();
        real.Item = 50883.82;
        reals.Add(real);

        real = new Number();
        real.Item = 29.24;
        reals.Add(real);

        real = new Number();
        real.Item = 772.85;
        reals.Add(real);

        real = new Number();
        real.Item = 106628.06;
        reals.Add(real);

        Console.WriteLine("Number of items: {0}", reals.Count);

        for (int i = 0; i < reals.Count; i++)
        {
            Number nbr = reals.Retrieve(i);
            Console.WriteLine("Number[{0}] = {1}", i, nbr.Item);
        }

        reals.Delete();

        Console.WriteLine("\nNumber of items: {0}", reals.Count);

        for (int i = 0; i < reals.Count; i++)
        {
            Number nbr = reals.Retrieve(i);
            Console.WriteLine("Number[{0}] = {1}", i, nbr.Item);
        }

        Number nbrToFind = new Number();
        nbrToFind.Item = 26486.56;

        bool Found = reals.Find(nbrToFind);
        if (Found == true)
            Console.WriteLine("\nThe number {0} was found in the list", nbrToFind.Item);
        else
            Console.WriteLine("\nThe number {0} was NOT found in the list", nbrToFind.Item);

        nbrToFind = new Number();
        nbrToFind.Item = 50883.82;

        Found = reals.Find(nbrToFind);
        if (Found == true)
            Console.WriteLine("The number {0} was found in the list\n", nbrToFind.Item);
        else
            Console.WriteLine("The number {0} was NOT found in the list\n", nbrToFind.Item);

        return 0;
    }
}

Ceci produirait :

Number of items: 6
Number[0] = 2974.03
Number[1] = 748.25
Number[2] = 50883.82
Number[3] = 29.24
Number[4] = 772.85
Number[5] = 106628.06

Number of items: 5
Number[0] = 2974.03
Number[1] = 748.25
Number[2] = 50883.82
Number[3] = 29.24
Number[4] = 106628.06

The number 26486.56 was NOT found in the list
The number 50883.82 was found in the list

Press any key to continue . . .
 
 

Précédent Copyright © 2007, Yevol Suivant