Guest User

Untitled

a guest
May 18th, 2016
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.29 KB | None | 0 0
  1. class EliminaNodi {
  2. /* scrivere una casse applicazione che data una lista di interi positivi,
  3.   elimini tutti i nodi che contengano numeri pari */
  4.  
  5.     public static void main(String[] args){
  6.         NodoListaI l;
  7.  
  8.         //creazione dell'array di interi
  9.         System.out.println("nodi pari all'inizio e alla fine e al centro");
  10.         l = new NodoListaI(3,new NodoListaI(4,new NodoListaI(5,
  11.             new NodoListaI(6,new NodoListaI(7,new NodoListaI(8,null))))));
  12.         System.out.println("INPUT");
  13.         stampaLista(l);
  14.         System.out.println("=========================");
  15.         System.out.println("elimina il primo pari iterativo");
  16.         stampaLista(eliminaPrimoPari(l));
  17.  
  18.         l = new NodoListaI(3,new NodoListaI(4,new NodoListaI(5,
  19.             new NodoListaI(6,new NodoListaI(7,new NodoListaI(8,null))))));
  20.         System.out.println("elimina il primo pari ricorsivo");
  21.         stampaLista(eliminaPrimoPariRic(l));
  22.  
  23.         l = new NodoListaI(3,new NodoListaI(4,new NodoListaI(5,
  24.             new NodoListaI(6,new NodoListaI(7,new NodoListaI(8,null))))));
  25.         System.out.println("elimina tutti i pari - metodo iterativo");
  26.         stampaLista(eliminaTuttiPari(l));
  27.  
  28.         l = new NodoListaI(3,new NodoListaI(4,new NodoListaI(5,
  29.             new NodoListaI(6,new NodoListaI(7,new NodoListaI(8,null))))));
  30.         System.out.println("elimina tutti i pari - metodo ricorsivo");
  31.         stampaLista(eliminaTuttiPariRic(l));
  32.  
  33.         System.out.println("=========================");
  34.         System.out.println("non ci sono nodi pari");
  35.         l = new NodoListaI(3,new NodoListaI(5,new NodoListaI(7,
  36.             new NodoListaI(9,new NodoListaI(11,new NodoListaI(13,null))))));
  37.         System.out.println("INPUT");
  38.         stampaLista(l);
  39.         System.out.println("elimina il primo pari iterativo");
  40.         l = new NodoListaI(3,new NodoListaI(5,new NodoListaI(7,
  41.             new NodoListaI(9,new NodoListaI(11,new NodoListaI(13,null))))));
  42.         stampaLista(eliminaPrimoPari(l));
  43.  
  44.         System.out.println("elimina il primo pari ricorsivo");
  45.         l = new NodoListaI(3,new NodoListaI(5,new NodoListaI(7,
  46.             new NodoListaI(9,new NodoListaI(11,new NodoListaI(13,null))))));
  47.         stampaLista(eliminaPrimoPariRic(l));
  48.  
  49.         System.out.println("elimina tutti i pari - metodo iterativo");
  50.         stampaLista(eliminaTuttiPari(l));
  51.         l = new NodoListaI(3,new NodoListaI(5,new NodoListaI(7,
  52.             new NodoListaI(9,new NodoListaI(11,new NodoListaI(13,null))))));
  53.         System.out.println("elimina tutti i pari - metodo ricorsivo");
  54.         stampaLista(eliminaTuttiPariRic(l));
  55.  
  56.     }
  57.  
  58.         //elimina la prima occorrenza di un nodo ITERATIVA
  59.         // (elimina il primo numero pari)
  60.         public static NodoListaI eliminaPrimoPari(NodoListaI l){
  61.             NodoListaI app;
  62.             app=l;
  63.             //controllo a parte il primo nodo
  64.             if (app.info%2==0) l=l.next;
  65.             else{
  66.                 while(app.next!=null && app.next.info%2!=0)
  67.                     app=app.next;
  68.                 //uscita dal while, se app.next==null vuol dire che
  69.                 //non ci sono nodi pari da eliminare
  70.                 if (app.next!= null) app.next=app.next.next;
  71.             }
  72.             return l;
  73.         }
  74.  
  75.         //elimina la prima occorrenza di un nodo RIOCRSIVA
  76.         public static NodoListaI eliminaPrimoPariRic(NodoListaI l){
  77.             NodoListaI res;
  78.             if (l==null) res = l;  //PASSO BASE
  79.             else if(l.info%2==0) res = l.next; //PASSO BASE
  80.                  else {l.next = eliminaPrimoPariRic(l.next);
  81.                        res = l;
  82.                  }
  83.             return res;
  84.         }
  85.  
  86.  
  87.         //elimina tutti i numeri pari dalla lista
  88.         public static NodoListaI eliminaTuttiPari(NodoListaI l){
  89.             NodoListaI app;
  90.             app=l;
  91.             while(app.next.next!=null){
  92.                 if (app.next.info%2==0)
  93.                     app.next=app.next.next;
  94.                 else app = app.next;
  95.             }
  96.             // controllo l'ultimo nodo
  97.             if (app.next.info%2==0) app.next = null;
  98.             // controllo il primo nodo
  99.             if (l.info%2==0) l=l.next;
  100.             return l;
  101.         }
  102.  
  103.         //elimina tutti i numeri pari dalla lista RICORSIVA
  104.         public static NodoListaI eliminaTuttiPariRic(NodoListaI l){
  105.             NodoListaI app,res;
  106.             //PASSO BASE
  107.             if (l==null) res = l;
  108.             else if(l.info%2==0) res = eliminaTuttiPariRic(l.next);
  109.                  else {l.next = eliminaTuttiPariRic(l.next);
  110.                        res = l;
  111.                  }
  112.             return res;
  113.         }
  114.  
  115.     /* =================================================================== */
  116.         public static void stampaLista(NodoListaI p) {
  117.             if (p!=null){
  118.                 while (p.next !=null) {
  119.                     System.out.println(p.info);
  120.                     p = p.next;
  121.                 }
  122.                 System.out.println(p.info);
  123.             }
  124.         }
  125.     /* =================================================================== */
  126.  
  127.  
  128. }
Advertisement
Add Comment
Please, Sign In to add comment