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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Linked lists. Una pequeña duda
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Linked lists. Una pequeña duda  (Leído 1,610 veces)
4v1dy4

Desconectado Desconectado

Mensajes: 139



Ver Perfil
Linked lists. Una pequeña duda
« en: 28 Diciembre 2022, 13:56 pm »

Hasta que me puse a experimentar con otras alternativas para codificar las listas, no me habia fijado en esto.

Si se implementa una funcion de insercion asi:

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4.  
  5. struct list
  6. {
  7. char data[512];
  8.  
  9. struct list *next;
  10. };
  11.  
  12. struct list *list_add(struct list **l, struct list element);
  13. //struct list *list_roam(struct list *l);
  14.  
  15. struct list *list_add(struct list **l, struct list element)
  16. {
  17. struct list **aux, *head;
  18. unsigned int count=0;
  19.  
  20. if(*l==NULL)
  21. {
  22. *l=(struct list *)malloc(sizeof(struct list));
  23. if(*l==NULL)
  24. {
  25. return *l;
  26. }
  27.  
  28. memcpy((struct list *) *l,
  29. (struct list *) &element,
  30. sizeof(struct list));
  31.  
  32. (*l)->next=NULL;
  33.  
  34. printf("1st element (addr %x) \n", *l);
  35.  
  36. return *l;
  37. }
  38.  
  39. aux=l;
  40. head=*l;
  41.  
  42. printf("head=%x \n", head);
  43.  
  44. printf("1: (*aux)=%x \n", (*aux));
  45. printf("1: (*aux)->data=%s \n", (*aux)->data);
  46.  
  47. while((*aux)!=NULL)
  48. {
  49. (*aux)=(*aux)->next;
  50. ++count;
  51. }
  52.  
  53. printf("2: (*aux)=%x \n", (*aux));
  54. printf("2: (*aux)->data=%s \n", (*aux)->data);
  55.  
  56. (*aux)=(struct list *)malloc(sizeof(struct list));
  57. if((*aux)==NULL)
  58. {
  59. *l=head;
  60. return *aux;
  61. }
  62.  
  63. memcpy((struct list *) (*aux),
  64. (struct list *) &element,
  65. sizeof(struct list));
  66.  
  67. (*aux)->next=NULL;
  68.  
  69. printf("3: (*aux)->data=%s \n", (*aux)->data);
  70.  
  71. printf("count=%d \n", count);
  72.  
  73. printf("head=%x \n", head);
  74.  
  75. *l=head;
  76. return *aux;
  77. }
  78.  
  79. int main(int argc, char **argv)
  80. {
  81. struct list *l=NULL;
  82. struct list data;
  83.  
  84. printf("linked list \n");
  85.  
  86. strcpy(data.data, "1");
  87. list_add(&l, data);
  88. strcpy(data.data, "2");
  89. list_add(&l, data);
  90. strcpy(data.data, "3");
  91. list_add(&l, data);
  92. strcpy(data.data, "4");
  93. list_add(&l, data);
  94. strcpy(data.data, "5");
  95. list_add(&l, data);
  96.  
  97.        return 0;
  98. }
  99.  

(notese que los prinft son para debugging)

Se como hacer una funcion de insercion funcional. Lo que no entiendo es por que esta forma de implementarla no funciona.

La funcion, segun lo que deduje, se comporta como si (*aux) no apuntara al siguiente nodo cuando la atraviesas, sino a algun otro lugar. No entiendo por que... ¿A donde va a apuntar? Si aux es un puntero, no la estructura. Ademas le especifique (aux=l) como se puede ver arriba.

Agradezco cualquier indicio. Un saludote.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Pequeña duda con un comando batch (NUEVA DUDA RELACIONADA)
Scripting
revenge1252 9 10,230 Último mensaje 13 Febrero 2008, 21:41 pm
por revenge1252
Pequeña duda....
Programación Visual Basic
Zaoner 1 1,192 Último mensaje 17 Noviembre 2008, 02:08 am
por ricardovinzo
Boton Linked
Programación Visual Basic
K1ll3rM4st3r01 2 2,452 Último mensaje 13 Diciembre 2010, 04:08 am
por agus0
Blackberry FactoryOS = --No Application Linked--
Dispositivos Móviles (PDA's, Smartphones, Tablets)
rub'n 0 2,553 Último mensaje 1 Marzo 2014, 20:48 pm
por rub'n
Linked List
Programación C/C++
michellcrh 7 3,625 Último mensaje 18 Noviembre 2020, 04:52 am
por AlbertoBSD
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines