class Nodo {
  public String info;
  public Nodo next;
}

public class PhotoGallery2 {

  // rappresentazione degli oggetti
  private String url;
  private Nodo listafoto;
 
  // metodi pubblici
  public PhotoGallery2(String u) {
    url = u;
    listafoto = null;
  }
  
  public int numFoto() {
    int cont = 0; 
    Nodo p = listafoto;
    while (p!=null) {
      cont++;
      p = p.next;
    }
    return cont;
  }
  
  public void aggiungi(String foto) {
    Nodo aux = new Nodo();
    aux.info = foto;
    aux.next = listafoto;
    listafoto = aux;
  }
  
  public void elimina(String foto) {
    if (listafoto == null)   // l'elemento non e' presente e
      return;  // non devo fare nulla
    else if (listafoto.info.equals(foto)) 
      listafoto = listafoto.next; // ho eliminato il primo
    else {
      Nodo p = listafoto;
      while (p.next!=null && !p.next.info.equals(foto)) 
        p = p.next;
      if (p.next.info.equals(foto))
        p = p.next.next;
      else // l'elemento non e' presente
        return; // non devo fare nulla
    }
  }

  /* oppure uso un nodo generatore
  public void elimina(String foto) {
    Nodo aux = new Nodo(); // nodo generatore
    aux.next = listafoto;
    Nodo p = aux;
    while (p.next!=null && !p.next.info.equals(foto)) 
      p = p.next;
    if (p.next.info.equals(foto))
      p = p.next.next;
    else // l'elemento non e' presente
      return; // non devo fare nulla
  }
  */

  public boolean presente(String foto) {
    Nodo p = listafoto;
    while (p!=null) {
      if (p.info.equals(foto)) return true;
      p = p.next;
    }
    return false;
  }

  public String[] restituisciTutteLeFoto() {
    String[] ris = new String[numFoto()];
    int i = 0;
    Nodo p = listafoto;
    while (p!=null) {
      ris[i] = p.info;
      i++;
      p = p.next;
    }
    return ris;
  }

  /* oppure eseguo il ciclo sul array
  public String[] restituisciTutteLeFoto() {
    String[] ris = new String[numFoto()];
    Nodo p = listafoto;
    for(int i = 0; i < ris.length; i++) {
      ris[i] = p.info;
      p = p.next;
    }
    return ris;
  }
  */
  
  public void svuota() {
    listafoto = null;
  }
}
