Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import fiji.io.*;
- class NodoLista{
- public Studente info;
- public NodoLista next;
- }
- class Studente{
- private String nome;
- private String cognome;
- private int matricola;
- public Studente(String n, String c, int m) {
- this.nome=n;
- this.cognome=c;
- this.matricola=m;
- }
- public String getNome(){
- return this.nome;
- }
- public String getCognome(){
- return this.cognome;
- }
- public int getMatricola(){
- return this.matricola;
- }
- public void setNome(String n){
- this.nome=n;
- }
- public void setCognome(String c){
- this.cognome=c;
- }
- public void setMatricola(int m){
- this.matricola=m;
- }
- public String toString(){
- return "STUDENTE \n\nNome: "+this.nome+" \nCognome: "+this.cognome+" \nMatricola: "+this.matricola+"\n";
- }
- public boolean equals(Studente p){
- return (this.matricola==p.matricola);
- }
- }
- class ProveListe {
- public static void main(String[] args) {
- NodoLista a=new NodoLista();
- a.info=new Studente("alfabeto","a",8);
- a.next=new NodoLista();
- a.next.info=new Studente("ab","ddda",5);
- a.next.next=new NodoLista();
- a.next.next.info=new Studente("ghgh","h",1);
- a.next.next.next=new NodoLista();
- a.next.next.next.info=new Studente("alaeto","rttt",9);
- Visualizzazione(DefOrdina(a));
- }
- public static void Visualizzazione(NodoLista p){
- if(p==null){
- System.out.println();
- }
- else{
- System.out.println(p.info.toString());
- Visualizzazione(p.next);
- }
- }
- public static NodoLista DefOrdina(NodoLista a){
- //System.out.println("Considero la lista a:");
- //Visualizzazione(a);
- if(a.next!=null){
- //System.out.println("Calcolo il Minimo:");
- NodoLista m=Minimo(a);
- //Visualizzazione(m);
- //System.out.println("Lo ordino:");
- NodoLista t=ordina(a,m);
- //Visualizzazione(t);
- a=t;
- //System.out.println("Effettuo la chiamata ricorsiva assegnando a t.next=DefOrdina(t.next)");
- t.next=DefOrdina(t.next);
- }
- //System.out.println("Ritorno a:");
- //Visualizzazione(a);
- return a;
- }
- //restituisce il nodolista con matricola minore
- public static NodoLista Minimo(NodoLista a){
- NodoLista min = a;
- NodoLista q=a.next;
- while(q!=null){
- if(min.info.getMatricola()>q.info.getMatricola()) min=q;
- q=q.next;
- }
- return min;
- }
- //mette il nodolista minimo alla prima posizione
- public static NodoLista ordina(NodoLista a, NodoLista x){
- NodoLista p=a;
- //elimino il nodo originale
- p=elimina(p,x.info);
- /* Questa operazione l'avevi messa per ultima, ma l'eliminazione non andava a buon fine poichè usavi un nuovo nodolista q
- * totalmente indifferente al resto del codice, dunque l'eliminazione veniva fatta ma tenuta nell'inutilizzato nodolista q.
- * Correggendo con p, però veniva eliminato anche l'elemento minimo inserito in testa, perciò prima cancello l'elemento minimo
- * e solo dopo lo aggiungo in testa
- */
- //copio la lista da spostare
- NodoLista y=new NodoLista();
- y.info=x.info;
- //posiziono la copia nella posizione iniziale
- y.next=p; //Devi mettere p e non a, perchè a è la lista originale, p invece, tiene conto dell'eliminazione dell'elemento minimo
- return y;
- }
- public static NodoLista elimina(NodoLista p, Studente x) {
- //System.out.println("Devo eliminare la matricola: "+x.getMatricola());
- if (p != null){
- //System.out.println("CONDIZIONE: se "+p.info.getMatricola()+" uguale a "+x.getMatricola());
- if (p.info.equals(x)){
- p = p.next;
- }else {
- //System.out.println("Blocco ELSE");
- NodoLista q = p;
- while (q.next!=null && !q.next.info.equals(x))
- q = q.next;
- //System.out.println("ELIMINO "+q.next.info);
- if (q.next!=null) q.next = q.next.next;
- }
- }
- return p;
- }
- /*
- public static NodoLista Inserisci(NodoLista a, String s) {
- NodoLista p=a;
- //NodoLista r=new NodoLista();
- if (p.next!=null) {
- //System.out.println(p.next.info+" compareTo "+s+" ="+p.next.info.compareTo(s));
- if (p.next.info.compareTo(s) < 0) {
- p=p.next;
- p=Inserisci(p,s);
- }
- }
- //System.out.println("next: "+p.next.info+" attuale: "+p.info);
- return p;
- }*/
- }
Add Comment
Please, Sign In to add comment