/* ***********************************************
     Esercizio: Inserire gli elementi di una
     pila p1 in una pila p2, conservando lo stesso ordine
   *********************************************** */

public class Ex_Pila1inPila2 {
  public static void main(String[] args) {
    //creo le due pile pił una temporanea x scambio
    Pila p1 = new Pila();
    Pila p2 = new Pila();
    Pila pTmp = new Pila();
    
    //riempio pila p1
    int cas;
    try {
      while(true) {
        cas = (int)(Math.random()*50+1);
        p1.Push(cas);
        System.out.print(cas + "\t");
      }
    } catch (StackFullException e) {
      System.out.println("\nPila p1 riempita");
    }
    
    //copio la pila p1 nella pila pTmp
    try {
      while(true)
        pTmp.Push(p1.Pop());
    } catch (StackEmptyException e) {
      System.out.println("Pila pTmp riempita con i dati della pila p1");
    }
      
    //copio la pila pTmp nella pila p2
    try {
      while(true)
        p2.Push(pTmp.Pop());
    } catch (StackEmptyException e) {
      System.out.println("Pila p2 riempita con i dati della pila pTmp");
    }
    
    //Visualizzo i dati della pila p2
    System.out.println("Adesso p2 contiene gli stessi dati di p1 e" +
          "con lo stesso ordine, quindi riprendendoli saranno estratti " +
          "nell'ordine inverso a quelli visualizzati all'inizio.");
    try {
      while(true)
        System.out.print(p2.Pop() + "\t");
    } catch (StackEmptyException e) {
      System.out.println("\nPila p2 vuota!");
    }
    
  }
}