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

    Eliminare elemento in una Lista Aiuto per favore

    Salve ragazzi, ho un problema,

    sto risolvendo un problema che ho da svolgere in java. Ho una lista con alcuni elementi devo eliminare il primo elemento della lista e non so come fare.

    Il metodo per eliminare l'elemento lo devo creare io ovviamente.

    CODICE CLASSE MAIN:

    codice:
    public class MainDoubling {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		Lista list = new ListDoubling();
    		
    		System.out.println("Creazione di lista 1");
    		System.out.println("la lista inizialmente e' vuota: " + list.isEmpty()+ "\n");
    		
    		//list.insert(null, list.firstList());
    		list.insert("b", list.firstList());
    		list.insert("c", list.firstList());
    		list.insert("d", list.firstList());
    		list.insert("e", list.firstList());
    		
    		System.out.println("Stampo tutti gli elementi");
    		Posizione p = list.firstList();
    		
    		while (!list.endList(p)) {
    		
    			System.out.println(list.readList(p));
    			p = list.succ(p);			
    		}
    		
    		System.out.println("inserisco f in seconda posizione \n");
    		list.insert("f", list.succ(list.firstList()));
    		
    		System.out.println("Stampo tutti gli elementi");
    	    	p = list.firstList();
    		
    		while (!list.endList(p)) {
    			
    			System.out.println(list.readList(p));
    			p = list.succ(p);			
    		}
    		
    		System.out.println("\n eliminazione elemento in prima posizione");
    		list.remove(list.firstList());
    		//punto in cui devo modificare il metodo remove dalla classe listdoubling.
    		p = list.firstList();
    	
    		while (!list.endList(p)) {
    			
    			System.out.println(list.readList(p));
    			p = list.succ(p);			
    		}
    		
    		
    		
    		System.out.println("\n eliminazione elemento in ultima posizione");
    		p = list.firstList();
    		Posizione q=null;
    		while (!list.endList(p)) {
    			q=p;
    			p = list.succ(p);			
    		}
    	
    		list.remove(q);
    		
    		p = list.firstList();
    	
    		while (!list.endList(p)) {
    			if (list.readList(p) != null)
    			System.out.println(list.readList(p));
    			p = list.succ(p);			
    		}
    		
    		System.out.println("\n eliminazione elemento in posizione 3");
    		q = list.succ(list.succ(list.firstList()));
    		list.remove(q);
    		
    		p = list.firstList();
    	
    		while (!list.endList(p)) {
    			
    			System.out.println(list.readList(p));
    			p = list.succ(p);			
    		}
    		
    		
    		
    		
    		System.out.println("Inserimento elemento fine in coda");
    		list.insert("fine", p);
    		
    		p = list.firstList();
    		
    		while (!list.endList(p)) {
    			
    			System.out.println(list.readList(p));
    			p = list.succ(p);			
    		}
    		
    		System.out.println("\n");
    		
    		System.out.println("inserimento elemento in posizione 4");
    		Posizione posizione4 = list.succ(list.succ(list.succ(list.firstList())));
    		list.insert("posizione 4", posizione4);
    		
    		
    		p = list.firstList();
    		
    		while (!list.endList(p)) {
    			
    			System.out.println(list.readList(p));
    			p = list.succ(p);			
    		}
    		System.out.println("inserimento elemento posizione predecessore di 4");
    		list.insert("posizione 3", list.pred(posizione4));
    		
    		p = list.firstList();
    		
    		while (!list.endList(p)) {
    			
    			System.out.println(list.readList(p));
    			p = list.succ(p);			
    		}
    		
    		
    		System.out.println("sovrascivo elemento posizione 4");
    		posizione4 = list.succ(list.succ(list.succ(list.firstList())));
    		list.insert("sovrascritto", posizione4);
    		
    		p = list.firstList();
    		
    		while (!list.endList(p)) {
    			
    			System.out.println(list.readList(p));
    			p = list.succ(p);			
    		}
    		
    		
    		
    		
    	}
    
    }
    CODICE CLASSE LIST DA IMPLEMENTARE

    codice:
    public class ListDoubling implements Lista {
    
    	private Object[] L = new Object[1];
    
    	private int n = 0;
    	
    	
    	public boolean isEmpty(){return n == 0;}
    
    	public boolean endList(Posizione p) {
    	    return ((Indice) p).indice == n;
    	}
      
    	public Posizione firstList() {
    		return new Indice();
    	}
    
    	public Posizione succ(Posizione p) {
    		if (endList(p))
    			throw new IndexOutOfBoundsException(((Indice) p).indice
    					+ " e' ultima posizione della lista");
    
    		Posizione pos = new Indice();
    		((Indice) pos).indice = ((Indice) p).indice + 1;
    		return pos;
    	}
    
    	
    	protected boolean checkPosition(Posizione p) {
    		   if (((Indice) p).indice < 0 || ((Indice) p).indice > n)
    			  return false;
    		else return true;
    	}
    	
    	public Object readList(Posizione p) {
    		if (!checkPosition(p) && !endList(p))
    			throw new IndexOutOfBoundsException("posizione non valida");
    		return L[((Indice) p).indice];
    	}
    	
    	public void insert(Object e, Posizione p) {
    		 if (!checkPosition(p))
    				throw new IndexOutOfBoundsException("Posizione di inserimento non valida");
    		 for (int i = n; i > ((Indice)p).indice; i--)
    					 L[i]=L[i-1];
    		 L[((Indice) p).indice] = e;
    			n++;
    		 if (n == L.length) {
    		   Object[] temp = new Object[2 * L.length];
    			for (Indice pos=(Indice) firstList(); !endList(pos); pos=(Indice) succ(pos))
    		     temp[pos.indice] = L[pos.indice];
    		   L = temp;
    		 }
    	}
    
    
    	/*
    	 * (non-Javadoc)
    	 * @see Lista#pred(Posizione)
    	 *  se p coincide con la posizione del primo elemento della lista sollevo IndexOutOfBoundsException
    	 *  altrimenti restituisco la posizione antecedente a p 
    	 */
    	public Posizione pred(Posizione p) {
    		// Da implementare
    		
    	}
    
    
    	/*
    	 * (non-Javadoc)
    	 * @see Lista#remove(Posizione)
    	 * Se la posizione p non è valida sollevo una IndexOutOfBoundsException
    	 * altrimenti 
    	 * 1. cancello l'elemento in posizione ((Indice)p).indice di L (usare shift a sinistra)
    	 * 2. decremento n
    	 * 3. eventualmente dimezzo L in accordo alla tecnica del raddoppiamento/dimezzamento
     	*/
    	public void remove(Posizione p) {
           
    		// Da implementare
    		if (!checkPosition(p))
    			throw new IndexOutOfBoundsException("Posizione di cancellazione non valida");	
    	    L[((Indice)p).indice]
    	
    	}
    
    
    	/*
    	 * (non-Javadoc)
    	 * @see Lista#writeList(java.lang.Object, Posizione)
    	 * Se la posizione p non è valida sollevo una IndexOutOfBoundsException
    	 * altrimenti scrivo in posizione ((Indice)p).indice di L l'elemento e
     	*/
    	public void writeList(Object e, Posizione p) {
    		// Da implementare
    	}
    
    	
    
    }
    Spero in un vostro aiuto grazie in anticipo come sempre

  2. #2
    a partire da p puoi spostare indietro di uno tutti gli elementi dell'array.
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

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.