ControleMachine/ExamenTests/PileBornee.java

87 lines
1.8 KiB
Java

import java.util.EmptyStackException;
/**
* Classe pouvant stocker un ensemble d'entier sous forme de pile
* On ne peut stocker que des entiers positifs
* La pile a une taille bornée donnée à la création de l'objet
* Toute case ne contenant pas un entier de la pile contient -1
*/
public class PileBornee{
// La mémoire de notre pile
protected int[] t;
// Le remplissage de notre pile
protected int index;
// Crée une pile dont la taille est bornée par l'entier donné en entrée
public PileBornee(int n){
t=new int[n];
for(int i=0;i<n;i++){
t[i]=-1;
}
index=0;
}
/**
* La fonction push ajoute l'élément n à la pile
* @param n un entier positif
* @return void
* @throws IllegalArgumentException si l'entier est négatif
* @throws IllegalStateException si la pile est pleine
*/
public void push(int n){
this.t[this.index]=n;
this.index++;
}
/**
* Renvoie l'élément de sommet de la pile si elle est non vide
* @return int le sommet de la pile
* @throws EmptyStackException si la pile est vide
*/
public int pop() throws EmptyStackException{
if(this.vide()){
throw new EmptyStackException();
}
index--;
int res=this.t[this.index];
return res;
}
/**
* Dit si la pile est vide
* @return boolean vrai si la pile est vide, faux sinon
*/
public boolean vide(){
return this.index==0;
}
/**
* Renvoie vrai si la pile contient l'argument
* @param n int à chercher dans la pile
* @return boolean vrai si n est dans la pile, faux sinon
*/
public boolean contient(int n){
boolean res=false;
for(int i=0;i<this.index;i++){
if(n==this.t[i]){
return true;
}else{
return false;
}
}
return res;
}
// Surcharge de toString pour un affichage correct
@Override
public String toString(){
String res="[";
for(int i=0;i<this.index;i++){
res+=this.t[i]+",";
}
return res+"]";
}
}