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();
}
}
}