ciao a tutti,
mi dareste un'imbeccata per riuscire a invertire una pila senza l'uso di pile o code di appoggio?
grazie mille
ciao a tutti,
mi dareste un'imbeccata per riuscire a invertire una pila senza l'uso di pile o code di appoggio?
grazie mille
Sei sicuro/a che sia possibile ?
I dati ce li hai solo nella pila e non puoi prelevarli se non con l'operazione di pop e reinserirli con push ?
EDIT:
Puoi postare la struttura della tua pila ?
Experience is what you get when you don’t get what you want
questo è il testo dell'esercizio:
Scrivere una funzione che inverta l’ordine dei valori di una pila. La funzione deve modificare la pila in ingresso e non crearne una nuova.
questa è l'implementazione della pila:
posso usare le funzioni tipiche delle pile (push,pop,top,...)Codice PHP:
struct elem
{
int d;
struct elem* next;
};
typedef struct elem elem;
typedef struct stack
{
int cnt;
elem* top;
}stack;
Facendo uno scambio dovresti riuscirci
La funzione Scambia dovrebbe ritornare la nuova testa ...codice:struct Nodo { /*...*/ struct Nodo *next; } *testa; struct Nodo *Scambia () { struct Nodo *temp = testa; struct Nodo *temp2 = NULL; while (temp) { struct Nodo *appoggio = temp2; temp2 = temp; temp = appoggio; temp = temp -> next; } return temp2; }
L'ho buttata giù così, non so neanche se funziona, fai delle prove perché io non ne ho il tempo...
Experience is what you get when you don’t get what you want
Aspetta lol ho dimenticato un po' di robaOriginariamente inviato da Xaratroom
Facendo uno scambio dovresti riuscirci
La funzione Scambia dovrebbe ritornare la nuova testa ...codice:struct Nodo { /*...*/ struct Nodo *next; } *testa; struct Nodo *Scambia () { struct Nodo *temp = testa; struct Nodo *temp2 = NULL; while (temp) { struct Nodo *appoggio = temp2; temp2 = temp; temp = appoggio; temp = temp -> next; } return temp2; }
L'ho buttata giù così, non so neanche se funziona, fai delle prove perché io non ne ho il tempo...
Experience is what you get when you don’t get what you want
Ecco ..
Prova così ..
... con le opportune modifiche
codice:struct Nodo { /*...*/ struct Nodo *next; } *testa; struct Nodo *Scambia () { struct Nodo *temp = testa; struct Nodo *temp2 = NULL; while (temp) { struct Nodo *appoggio1 = temp; temp = temp->next; appoggio->next = temp2 temp2 = appoggio; } return temp2; }
Experience is what you get when you don’t get what you want