Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Le pile

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    50

    Le pile

    Salve ragazzi...

    Ho creato i metodi push e pop ma non ho idea di come usarli cioe': mi hanno detto di usarli ad esempio in un for....
    Ma io mi chiedo... Un for ha una durata predeterminata, ma le liste e le pile servono prorio a memorizzare teoricamente oggetti all'infinito.
    Come si usano quinti questi metodi?
    Grazie per l'aiuto...

  2. #2
    Utente di HTML.it L'avatar di @DI3GO@
    Registrato dal
    Nov 2008
    Messaggi
    537
    Crei una classe pila, che ha un vettore contenente i tuoi oggetti da gestire.
    Chiami il suo metodo push per aggiungere un metodo in testa ed il metodo pop per rimuovere l'oggetto in coda ( è un FIFO vero? mentre lo stack è un LIFO )
    Chiaro?
    Nipote: persona incompetente, con le soli doti di "copia/incolla" e la creazione automatica di siti internet ed interfaccie grafiche.Compie lavori apparentemente qualificati e richiesta una modifica sparisce in quatemala con i pochi soldi ottenuti.[...] Fonte la Diegonzelli

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    50
    Diciamo non molto chiaro...
    Le pile sono LIFO mentre le code FIFO...
    Il funzionamento l'ho capito ma come usarli in una classe no...

    mi faresti un piccolo esempio?

    Ti ringrazio moltissimo...

  4. #4
    Utente di HTML.it L'avatar di @DI3GO@
    Registrato dal
    Nov 2008
    Messaggi
    537
    Originariamente inviato da axl89
    Diciamo non molto chiaro...
    Le pile sono LIFO mentre le code FIFO...
    Il funzionamento l'ho capito ma come usarli in una classe no...
    Errore mio....

    Originariamente inviato da axl89
    mi faresti un piccolo esempio?

    Ti ringrazio moltissimo...
    codice:
    class Pila{
          private static pilaDaGestire;
          int index = 0;
    
          public Pila( int dimensionePila ){
                pilaDaGestire = new Object[dimensionePila];
          }
    
          public void push( Object oggettoDaInserire ){
                pilaDaGestire[ index % pilaDaGestire.length ] = oggettoDaInserire;
                index++;
          }
    
          public Object pop(){
               return pilaDaGestire[ ( --index )%pilaDaGestire.length ];
          }
    }
    Note:
    E' una pila circolare, infatt per individuare la posizione di lettura e scrittura uso il modulo (%) o comunemente chiamato resto della divisione. Questo per non effettuare controlli sulla dimensione della pila qualora l'indice dovesse superare il limite massimo.

    Non è Thread Safe, quindi se più processi dovessere accedervi contemporaneamente non va bene, deve essere sincronizzata.

    Non ho aggiunto il controllo sul pop, dove index == 0 ritorna un oggetto nullo, in quanto non ancora aggiunto niente e quindi ovvio errore.

    Altre note non ne ho in mente.

    Ora basta che dalla tua classe principale crei un nuovo oggetto Pila e la gestisci tramite pop e push.
    Nipote: persona incompetente, con le soli doti di "copia/incolla" e la creazione automatica di siti internet ed interfaccie grafiche.Compie lavori apparentemente qualificati e richiesta una modifica sparisce in quatemala con i pochi soldi ottenuti.[...] Fonte la Diegonzelli

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    50
    Quindi devo dichiarare piladagestire di tipo string nel caso voglia momerizzare stringhe...
    e cmq a dimensionePila non posso dargli un valore perche' deve variare man mano che si scrive una stringa ad esempio..... o qui mi sbaglio...


  6. #6
    Utente di HTML.it L'avatar di @DI3GO@
    Registrato dal
    Nov 2008
    Messaggi
    537
    Originariamente inviato da axl89
    Quindi devo dichiarare piladagestire di tipo string nel caso voglia momerizzare stringhe...
    e cmq a dimensionePila non posso dargli un valore perche' deve variare man mano che si scrive una stringa ad esempio..... o qui mi sbaglio...

    Puoi aggiungere un parametro....
    Del tipo tu prima crei una lista di dimensione 10.
    Aggiungi il parametro scritti che aumenta ogni volta che aggiungi un elemento ed ogni volta che prelevi l'elemento lo decrementi.
    In fase di scrittura se scritti e la dimensione combaciano reistanzi un nuovo vettore con gli stessi elementi, incrementando la dimensione di un valore a tua scelta ( es. di altri 10 ).

    Altrimenti utilizzi delle Collection ce già lo fanno, come un ArrayList<String>.
    Nipote: persona incompetente, con le soli doti di "copia/incolla" e la creazione automatica di siti internet ed interfaccie grafiche.Compie lavori apparentemente qualificati e richiesta una modifica sparisce in quatemala con i pochi soldi ottenuti.[...] Fonte la Diegonzelli

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.