È possibile utilizzare una chiamata ricorsiva nella catena di elenchi collegati con un riferimento a ciò a cui si desidera scrivere. Ogni nodo userebbe la funzione di stampa del nodo figlio mentre passava il riferimento prima di stamparsi.
In questo modo ogni nodo nell'elenco passerebbe in basso, fino a quando l'ultimo non poteva e sarebbe andato direttamente in scrittura, quindi ogni backup della catena avrebbe scritto dopo l'ultimo tutto il ritorno in avanti .
Modifica
Questo in realtà non va bene per le specifiche a causa della spazio lineare sulla pila. Se si dispone di qualcosa all'esterno per eseguire le funzioni e un metodo di scrittura nella parte anteriore di una stringa, la logica di base può comunque funzionare.
Questo è quello che stavo pensando. Tuttavia, è una buona pratica in una situazione del mondo reale?(Assumendo passaggio per riferimento) –
In realtà lo si dovrebbe invertire prima senza stampare e quindi stamparlo mentre lo si inverte nuovamente. – x4u
@Razor: ish. Normalmente se si passa qualcosa per la stampa, ci si aspetterebbe che il callee la consideri non modificabile. Quindi, nelle lingue che si preoccupano di questo tipo di cose, la funzione deve (a sorpresa) prendere un parametro non-const oppure la funzione stessa deve contenere codice const-non sicuro. Dovresti decidere se i benefici valgono il rischio aggiuntivo di scrivere codice errato o se sarebbe meglio fare una copia inversa dell'elenco o utilizzare invece una struttura bidirezionale (ad esempio una lista doppiamente collegata). Se è un beneficio abbastanza serio, qualsiasi cosa è una buona pratica ;-) –