Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Realizzare una lista circolare in java

    Salve ragazzi, sn con un nuovo quesito da porvi.

    Sto perdendo un casino di tempo.

    Ho da realizzare una lista circolare in java. La sua interfaccia è definita come segue

    codice:
    public interface CircList<T> extends Iterable<T>{
       public void addCircList(T e);
       public void delCircList();
       public T value();
       public boolean isEmpty();
       public void ruotaAvanti();
       public int numItem();
    }
    il problema è nell'implementazione della classe che implementa l'interfaccia e credo che lo faccio nel metodo addCircList...

    mi potete dire dove sbaglio???

    questa è l'implementazione della classe

    codice:
    public class ListaCircoCollegata<T> implements CircList<T>{
        
    	int n =0;
    	
    	Record<T> listHead = null;
    	Record<T> fine = null;
    	@Override
    	public void addCircList(T e) {
    		// TODO Auto-generated method stub
    		if(isEmpty()){
    			//System.out.println("Entro");
    			listHead = new Record<T>(e);
    			fine = listHead;
    			n++;
    		}
    		else
    		{
    		
    			fine.next = new Record<T> (e,fine);
    			fine = fine.next;
    			n++;
    		}
    	}
    
    	@Override
    	public void delCircList() {
    		// TODO Auto-generated method stub
    		if(isEmpty())
    			throw new EccezionestrutturaVuota("Struttura Vuota");
    		listHead = listHead.next;
    		n--;
    	}
    
    	@Override
    	public boolean isEmpty() {
    		// TODO Auto-generated method stub
    		return listHead == null;
    	}
    
    	@Override
    	public int numItem() {
    		// TODO Auto-generated method stub
    		return n;
    	}
    
    	@Override
    	public void ruotaAvanti() {
    		// TODO Auto-generated method stub
    		listHead = listHead.next;
    	}
    
    	@Override
    	public T value() {
    		// TODO Auto-generated method stub
    		if(isEmpty())
    			throw new EccezionestrutturaVuota("Struttura Vuota");
    		return (T)listHead.elem;
    	}
    	
    	public Iterator<T> iterator(){
    		return new ListaCircIterator<T>(listHead,fine);
    	}
       
    	public static void main(String[] args)
    	{
    		ListaCircoCollegata<String> listaCircolare = new ListaCircoCollegata<String>();
    		listaCircolare.addCircList("alfa");
    		listaCircolare.addCircList("beta");
    		listaCircolare.addCircList("gamma");
    		listaCircolare.addCircList("delta");
    		listaCircolare.addCircList("epsilon");
    		listaCircolare.addCircList("zeta");
    		listaCircolare.addCircList("eta");
    		listaCircolare.addCircList("theta");
    		
    		System.out.println("Stampo gli elementi inseriti");
    		Iterator it = listaCircolare.iterator();
    		
    		while(!it.hasNext())
    		{
    			System.out.println("Stringa: " + it.next());
    		}
    		
    		listaCircolare.ruotaAvanti();
    		listaCircolare.ruotaAvanti();
    		listaCircolare.delCircList();
    		System.out.println("Stampo gli elementi dopo aver eseguito le varie operazioni");
    		Iterator it2 = listaCircolare.iterator();
    		while(!it2.hasNext())
    		{
    			System.out.println("Stringa: " + it.next());
    		}
    		
    
    	}
    }

  2. #2

    Re: Realizzare una lista circolare in java

    Originariamente inviato da bircastri
    codice:
    fine.next = new Record<T> (e,fine);
    Presumo che e venga aggiunto in coda...quindi
    codice:
    new Record<T> (e,null);
    O.T. Faccio il tuo stesso corso di laurea

  3. #3
    ah ecco, però ascolta, tu forse hai capito di che traccia sto parlando...

    La lista è circolare e dopo l'ultimo elemento bisogna stampare nuovamente il primo elemento. Così mi pare non funzioni

  4. #4
    Originariamente inviato da bircastri
    La lista è circolare
    Dall'implementazione non mi sembra proprio. Poi la traccia non la conosco.

    Originariamente inviato da bircastri
    Così mi pare non funzioni
    Fai un test. Inoltre l'operatore ruotaAvanti causerebbe un bel NullPointerException se la lista fosse vuota.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.