Ciao a tutti, vi chiedo aiuto per tentare di capire dove sbaglio (per parafrasare una famosa canzone, la programmazione non sarà mai il mio mestiere).
Premettendo che sto studiando Strutture Dati per un corso universitario, tra gli esercizi relativi alla queue c'è questo:
Scrivere la funzioneche inverte il contenuto della coda Q.codice:public static <E> void reverse(Queue<E> Q)
Ricordo che queue rappresenta una coda di tipo FIFO, in cui gli inserimenti avvengono in coda e le cancellazioni in testa, e che le operazioni consentite sono enqueue (inserimento in coda) e dequeue (estrazione dalla testa).
Problema: come ottengo l'inversione della coda? Avevo pensato a una cosa del genere:
ma la logica suggerisce che togliendo dal fondo e reinserendo in testa ottengo, alla fine, di nuovo la situazione di partenza. Qualche idea in proposito?codice:public Queue<E> reverseQueue(Queue<E> coda) { queue1 = new ArrayQueue<E>(capacity); queue1 = (ArrayQueue<E>) coda; while (!queue1.isEmpty()) queue2.enqueue(queue1.dequeue()); return queue2;}
Lo step successivo invece sarebbe di fare la stessa operazione usando un metodo ricorsivo... e se qualcuno avesse consigli anche per questo sarebbe cosa graditissima!![]()

).
Rispondi quotando