C# – Pile d'entiers

Ce qui suit présente une pile d'entiers en C#, avec pour substrat un int[] dont la capacité est fixée a priori.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace PileEntiers
{
   class PileVideException : ApplicationException
   {
   }
   class PilePleineException : ApplicationException
   {
   }
   class Pile
   {
      const int CAPACITÉ = 100;
      int nelems;
      int[] elems;
      public Pile()
      {
         nelems = 0;
         elems = new int[CAPACITÉ];
      }
      public bool EstVide
      {
         get { return nelems == 0; }
      }
      public bool EstPleine
      {
         get { return nelems == elems.Length; }
      }
      public int Top()
      {
         if (EstVide)
            throw new PileVideException();
         return elems[nelems - 1];
      }
      public void Push(int elem)
      {
         if (EstPleine)
            throw new PilePleineException();
         elems[nelems] = elem;
         ++nelems;
      }
      public int Pop()
      {
         if (EstVide)
            throw new PileVideException();
         --nelems;
         return elems[nelems];
      }
   }
   class Program
   {
      static void Main(string[] args)
      {
         Pile zePile = new Pile();
         for (int i = 1; i <= 10; ++i)
            zePile.Push(i);
         Console.WriteLine("Sur le dessus: {0}", zePile.Top());
         while (!zePile.EstVide)
            Console.Write("{0} ", zePile.Pop());
         Console.WriteLine();
      }
   }
}

Valid XHTML 1.0 Transitional

CSS Valide !