View Full Version : [C] Code: Inversione di una coda
Questa funzione dovrebbe invertire una coda modificando la coda presa in ingresso e non creandone una nuova, non capisco perchè non stampa niente, forse sbaglio qualche funzione nei file .h. La funzione è giusta?
codaPtr Inverti(codaPtr C)
{
pilaPtr P=NULL;
while(Empty(C)==0)
{
P=Push(P,Inizio(C));
C=Eliminazione(C);
}
while(Empty(P)==0)
{
C=Inserimento(C,Top(P));
Pop(P);
}
return C;
}
alucard82
09-04-2008, 14:36
da quello che mi ricordo io quando togli un elemento da una coda questo elemento viene perso. quindi devi usare x forza una struttura dati di appoggio, magari in una PILA, e poi fare uscire i dati dalla pila (che verranno presi nell'ordine inverso).
Spero di non aver detto cavolate :D
ciao
infatti li tolgo dalla coda e li metto nella pila...e poi li rimetto nella coda e quindi saranno in ordine inverso
wingman87
09-04-2008, 20:14
Sei sicuro che Eliminazione ed Inserimento funzionino bene? Eliminazione deve eliminare il primo elemento ed Inserimento deve fare un inserimento in fondo alla coda.
Penso che la strategia migliore sia affrontare il problema in forma ricorsiva:
la tua funzione codaPtr inverti(codaPtr&) può scorrere fino all'ultimo elemento, "tagliarlo" e farlo puntare all'elemento restituito da una chiamata successiva della funzione.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.