impression de la liste liée à partir de début
J'ai obtenu le code de wikipedia pour la liste chaînée ( http://en.wikipedia.org/wiki/Linked_list ).
Mais il imprime le résultat dans l'ordre inverse (5 4 3 2 1 ). Comment faire que ce soit pour imprimer à partir de début ( 1 2 3 4 5).
- Qui exemple de code cherchez-vous à? Je pense que vous êtes l'incompréhension de l'insertion, et non pas l'impression.
- C'est une longue page avec beaucoup d'exemples de code. Post la routine spécifique vous rencontrez des problèmes avec.
- L'examen de la question marqué "C", le C de l'exemple de code serait le seul à regarder.
- Exemple sur le wiki est trompeuse: list_add est en fait "insérer au début" et non pas "plus fin" que l'intuition pourrait le suggérer.
Vous devez vous connecter pour publier un commentaire.
En regardant l'exemple suivant:
Éléments sont ajoutés à la début de la liste liée lorsque vous appelez
list_add
. C'est pour des raisons d'efficacité; vous n'avez pas à transverse de l'ensemble de la liste liée à insérer un élément (que vous avez à faire si vous vouliez ajouter).À imprimer dans le sens inverse, vous pouvez utiliser la récursivité, de construire votre propre pile (qui est l'aveugle de la récursivité), ou de recréer la liste dans l'ordre inverse. Une version récursive:
last_element->next
. (Assurez-vous que le nouveau nœud est->next
estNULL
!)while(n->next != NULL) { n = n->next; }
Je suppose que vous parlez de l'implémentation C dans "support de la Langue".
Il n'est pas imprimer dans l'ordre inverse. C'est parce que les éléments sont insérés dans l'en-tête de la liste, si l'insertion de 1, 2, 3 aboutirait à une liste qui contient 3, 2, 1.
C'est parce que la liste est représenté par son chef, de sorte qu'il est plus rapide de l'insertion à la tête de la queue. À insérer, à la queue, vous devez aller à travers l'ensemble de la liste. Cela rend l'insertion O(n) au lieu de O(1).
Vu que c'est une liste liée individuellement, vous ne pouvez pas l'imprimer dans l'ordre parce que vous ne pouvez pas en avant.
NULL
pointeur. Alors juste le pointeur sur l'élément que vous tentez d'insérer.C'est parce que la façon dont la liste est construit.
À imprimer dans le sens inverse, juste une boucle à la dernière entrée et impression à partir de là.
L'ordre dans lequel la liste est en cours d'impression est l'ordre dans lequel les éléments sont présents dans la liste. Vous pouvez l'imprimer dans l'ordre inverse (j'.e dans l'ordre dans lequel les éléments ont été insérés) en utilisant la récursivité. code suivant affichera la liste dans l'ordre inverse
J'ai ce programme qui imprime une chaîne de caractères dans le sens inverse en utilisant la récursivité. Pouvez vous s'il vous plaît utilisez votre liste liée, comme l'entrée à elle?
Je peux le changer moi-même, mais espérons qu'il sera un bon exercice pour vous.
Conseils:
Vous pouvez également essayer une double liste chaînée. Fondamentalement, vous avez un supplément de pointeur vers l'élément précédent
Vous pouvez ensuite imprimer la liste de la tête et/ou de la queue.