PDA

View Full Version : [C] Code: Inversione di una coda


xbubbax
08-04-2008, 19:26
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

xbubbax
09-04-2008, 19:38
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.

Albi89
09-04-2008, 20:49
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.