elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Por que ésta pequeña función de invertir una lista enlazda funciona?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Por que ésta pequeña función de invertir una lista enlazda funciona?  (Leído 1,958 veces)
ShadowA7X

Desconectado Desconectado

Mensajes: 19



Ver Perfil
Por que ésta pequeña función de invertir una lista enlazda funciona?
« en: 24 Noviembre 2014, 23:59 pm »

Hola chicos/as que tal? espero que estén bien. Vine nuevamente aquí porque uds siempre me sacan las dudas precisas que tengo, y debo aclarar que les estoy muy agradecido. Ahora bien necesito que por favor alguien me explique (si es posible con manzanitas o dibujitos xd) por qué ésta función de invertir lista funciona tan bien:





Código
  1.  
  2. typedef struct NODO{
  3.  
  4. char *nombre;
  5. struct NODO *sgte;
  6.  
  7. }nodo;
  8.  
  9. void invertirlista(nodo **inicio){
  10.  
  11. nodo *aux,*next;
  12.  
  13. aux=*inicio;
  14. *inicio=NULL;
  15.  
  16. while(aux!=NULL){
  17.  
  18. next=aux->sgte;
  19. aux->sgte=*inicio;
  20. *inicio=aux;
  21. aux=next;
  22.  
  23. }
  24. }


El typedef lo coloqué por si alguien siente necesario saber como fue hecha la lista (aunque verdaderamente no creo que importe para la pregunta que estoy haciendo).Sé como crear,mostrar y eliminar listas y nodos, he intentado esquematizar ésta función tan corta pero no he podido aclararle a mi cabeza como funciona. De antemano muchas gracias por su ayuda  :)



« Última modificación: 25 Noviembre 2014, 00:18 am por ShadowA7X » En línea

avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Por que ésta pequeña función de invertir una lista enlazda funciona?
« Respuesta #1 en: 25 Noviembre 2014, 01:01 am »

Hola ShadowA7X, es un código muy limpio y la verdad bastante bueno. Te pongo un ejemplo práctico de lo que hace el algoritmo. Tenemos una lista con 4 nodos (o lista da igual como los llames):

P Q R S

Sabemos que esos nodos tienen un puntero al nodo siguiente, y esos estan tal que asi:
P -> Q , Q -> R , R -> S y S -> NULL

(entendiendo esa flechita por, "el nodo P tiene un puntero que apunta a Q")

Lo que hace esto es invertir el sentido, es decir, que P apunte a NULL, Q apunte a P , R apunte a Q y S apunte a R. (entendiendo por apuntar, que el nodo tiene un puntero que apunta a otro nodo). Realmente no modifica la lista en sí, sino a quienes apuntan sus nodos, el meollo del asunto está aqui:
Código
  1. next=aux->sgte;
  2. aux->sgte=*inicio;

Saludos.


« Última modificación: 25 Noviembre 2014, 01:08 am por avesudra » En línea

Regístrate en
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Tutorial invertir lista simple en java a travez de nodos by.AmeRiK@nO
Java
Amerikano|Cls 7 13,279 Último mensaje 10 Marzo 2022, 01:03 am
por Defeat_Col
Reto: puedes descifrar esta pequeña funcion Php?? « 1 2 »
PHP
PanConMantequilla 12 6,231 Último mensaje 6 Agosto 2010, 04:03 am
por Castg!
Invertir una función en Python.
Scripting
jam man 4 3,249 Último mensaje 14 Octubre 2015, 14:44 pm
por jam man
Invertir una Lista en C - La funcion Pop no me da el ultimo elemento.?
Programación C/C++
palacio29 3 3,607 Último mensaje 27 Octubre 2016, 01:01 am
por MAFUS
Como invertir lista sencilla con el uso de nodos
Java
betast 3 2,844 Último mensaje 22 Abril 2019, 21:01 pm
por CalgaryCorpus
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines