La pila è una particolare lista in cui l'inserimento e la cancellazione è consentita solo ad una estremità. Questa gestione è anche chiamata LIFO (Last In First Out), in quanto l'ultimo elemento inserito è il primo ad essere estratto. L'estremità della lista in cui è consentito l'inserimento e l'estrazione è chiamata top o cima.
Sia data una pila composta dagli elementi a1, a2, a3, …., an e si supponga che la cima sia rappresentata dalla posizione del primo elemento a1. L'inserimento di un elemento x produce la nuova pila x, a1, a2, a3, …., an. La nuova cima della PILA diviene la posizione di x. La cancellazione della cima ripristina la pila iniziale a1, a2, a3, …., an.
codice:
 
#define N 10
#define PILAVUOTA -1

typedef int tipobase;
typedef char boolean;

struct stack {
	 tipobase info[N];
	 int top;
} ;

void MakeNull(stack *s)
{
  s->top=PILAVUOTA;
}


boolean Empty(stack *s)
{
   return(s->top==PILAVUOTA);
}

boolean Full(stack *s)
{
   return(s->top==N-1);
}

void Push(stack *s, tipobase x)
{
 if (!Full(s)) {
	s->top++;
	s->info[s->top]=x;
 }
}

void Pop(stack *s)
{
 if (!Empty(s))
		s->top--;
}

tipobase Top(stack *s)
{
  if (!Empty(s))
	return(s->info[s->top]);
}