2023-06-16 16:41:10 +02:00
|
|
|
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;
|
|
|
|
}
|
|
|
|
}
|
2023-06-21 10:17:31 +02:00
|
|
|
return res;
|
2023-06-16 16:41:10 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// 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+"]";
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|