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

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema con arbol en ubuntu
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con arbol en ubuntu  (Leído 3,485 veces)
Gallu

Desconectado Desconectado

Mensajes: 247



Ver Perfil
Problema con arbol en ubuntu
« en: 27 Abril 2010, 01:22 am »

Buenas a todos , estoy intentando crear operaciones para un árbol binario y no se que sucede,  el compilador me da estos resultados
Código
  1. diego@diego-desktop:~/Documentos/fuente$ gcc arbol.c -o arbol
  2. arbol.c: En la función ‘main’:
  3. arbol.c:24: aviso: declaración implícita incompatible de la función interna ‘malloc
  4. arbol.c: En la función ‘insertar’:
  5. arbol.c:43: aviso: declaración implícita incompatible de la función interna ‘malloc
  6. arbol.c: En la función ‘arbol_to_array’:
  7. arbol.c:76: aviso: declaración implícita incompatible de la función interna ‘realloc
  8. arbol.c:81: aviso: declaración implícita incompatible de la función interna ‘realloc
  9. diego@diego-desktop:~/Documentos/fuente$
  10.  
Pero cuando ejecuto me aparece los siguiente
Código
  1. *** glibc detected *** ./arbol: realloc(): invalid pointer: 0xbfe00bd8 ***
  2. ======= Backtrace: =========
  3. /lib/tls/i686/cmov/libc.so.6[0xb7640604]
  4. /lib/tls/i686/cmov/libc.so.6(realloc+0x242)[0xb7645022]
  5. /lib/tls/i686/cmov/libc.so.6(realloc+0x42)[0xb7644e22]
  6. ./arbol[0x804872f]
  7. ./arbol[0x8048519]
  8. /lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe5)[0xb75e7775]
  9. ./arbol[0x80483a1]
  10. ======= Memory map: ========
  11. 08048000-08049000 r-xp 00000000 08:05 10223911   /home/diego/Documentos/fuente/arbol
  12. 08049000-0804a000 r--p 00000000 08:05 10223911   /home/diego/Documentos/fuente/arbol
  13. 0804a000-0804b000 rw-p 00001000 08:05 10223911   /home/diego/Documentos/fuente/arbol
  14. 08ffa000-0901b000 rw-p 08ffa000 00:00 0          [heap]
  15. b75d0000-b75d1000 rw-p b75d0000 00:00 0
  16. b75d1000-b772d000 r-xp 00000000 08:05 376906     /lib/tls/i686/cmov/libc-2.9.so
  17. b772d000-b772e000 ---p 0015c000 08:05 376906     /lib/tls/i686/cmov/libc-2.9.so
  18. b772e000-b7730000 r--p 0015c000 08:05 376906     /lib/tls/i686/cmov/libc-2.9.so
  19. b7730000-b7731000 rw-p 0015e000 08:05 376906     /lib/tls/i686/cmov/libc-2.9.so
  20. b7731000-b7734000 rw-p b7731000 00:00 0
  21. b7734000-b7741000 r-xp 00000000 08:05 327701     /lib/libgcc_s.so.1
  22. b7741000-b7742000 r--p 0000c000 08:05 327701     /lib/libgcc_s.so.1
  23. b7742000-b7743000 rw-p 0000d000 08:05 327701     /lib/libgcc_s.so.1
  24. b7743000-b7746000 rw-p b7743000 00:00 0
  25. b7746000-b7747000 r-xp b7746000 00:00 0          [vdso]
  26. b7747000-b7763000 r-xp 00000000 08:05 328221     /lib/ld-2.9.so
  27. b7763000-b7764000 r--p 0001b000 08:05 328221     /lib/ld-2.9.so
  28. b7764000-b7765000 rw-p 0001c000 08:05 328221     /lib/ld-2.9.so
  29. bfded000-bfe02000 rw-p bffeb000 00:00 0          [stack]
  30. Cancelado
  31.  
Agradeceria cualquier sugerencia , el código es el siguiente
Código
  1. #include <stdio.h>
  2.  
  3. typedef struct {
  4.    int  info;
  5.    void *izq , *der;
  6. }Nodo;
  7.  
  8. //definimos el tipo puntero a nodo
  9. typedef Nodo * PtrNodo;
  10.  
  11.  
  12. void insertar(PtrNodo *ptrNodo, int info);
  13. int esVacio(PtrNodo nodo);
  14. int buscar(PtrNodo nodo, int elem);
  15. int nodos(PtrNodo nodo);
  16. int arbol_to_array(PtrNodo nodo, int **array, int numEle);
  17.  
  18. int main(){
  19.    PtrNodo raiz = NULL;
  20.    int array[] ={8,1,4,2,6,7};
  21.    int info = 4;
  22.    int  *elem;
  23.    int i = 0;
  24.    elem = (int*)malloc(sizeof(int));
  25.    insertar(&raiz , array[0]);
  26.    insertar(&raiz , array[1]);
  27.    insertar(&raiz , array[2]);
  28.    insertar(&raiz , array[3]);
  29.    insertar(&raiz , array[4]);
  30.    insertar(&raiz , array[5]);
  31.    if(arbol_to_array(raiz, &elem , 0)){
  32.        while(i < 5){
  33.            printf("\nValor %d",elem[1]);
  34.            i++;
  35.        }
  36.    }
  37.    return 0;
  38. }
  39.  
  40.  
  41. void insertar(PtrNodo *ptrNodo, int info){
  42.    if(esVacio(*ptrNodo)){
  43.        *ptrNodo = (PtrNodo) malloc(sizeof(Nodo));
  44.        (*ptrNodo)->info = info;
  45.        (*ptrNodo)->izq = (*ptrNodo)->der = NULL;
  46.    }
  47.    else if ((*ptrNodo)->info < info) insertar((void*)(&(*ptrNodo)->der), info);
  48.    else if ((*ptrNodo)->info > info) insertar((void*)(&(*ptrNodo)->izq), info);
  49. }
  50.  
  51.  
  52. int esVacio(PtrNodo nodo){
  53.    if(nodo == NULL)return 1;
  54.    return 0;
  55. }
  56.  
  57. int buscar(PtrNodo nodo, int elem){    
  58.  if (nodo == NULL) return 0;
  59.  else if (nodo->info < elem) return buscar(nodo->der, elem);
  60.  else if (nodo->info > elem) return buscar(nodo->izq, elem);
  61.  else return 1;
  62. }
  63.  
  64. int nodos(PtrNodo nodo){
  65.    if(!nodo)return 0;
  66.    else return(1 + nodos(nodo->izq) + nodos(nodo->der));
  67. }
  68. int arbol_to_array(PtrNodo nodo, int **array, int numElem){    
  69.    if(!nodo){
  70.        return 0;
  71.    }else{        
  72.        *array[numElem] = nodo->info;
  73.        printf("\nPos:%d  ele:%d",numElem ,*array[numElem]);
  74.        if(nodo->izq){
  75.            numElem++;
  76.            realloc(array , (numElem + 1) * sizeof(int));
  77.            arbol_to_array(nodo->izq , array , numElem);
  78.        }
  79.        if(nodo->der){
  80.            numElem++;
  81.            realloc(array , (numElem + 1) * sizeof(int));
  82.            arbol_to_array(nodo->der , array , numElem);
  83.        }
  84.        return 1;
  85.    }
  86. }
  87.  
  88.  
  89.  


En línea

Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.
SeC

Desconectado Desconectado

Mensajes: 109


@susan.


Ver Perfil WWW
Re: Problema con arbol en ubuntu
« Respuesta #1 en: 27 Abril 2010, 02:13 am »

Código
  1. #include <stdlib.h>


En línea

Educad a los niños y no sera necesario castigar a los hombres - Pitagoras.
Gallu

Desconectado Desconectado

Mensajes: 247



Ver Perfil
Re: Problema con arbol en ubuntu
« Respuesta #2 en: 27 Abril 2010, 17:53 pm »

Lo probaré en casa en ubuntu , pero aqui en el curro , con windows , se ejecuta una vez el print de arbol_to_array y peta
Código
  1.  printf("\nPos:%d  ele:%d",numElem ,*array[numElem]);
espero que se solucione solo con agregarle la libreria...
En línea

Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.
Gallu

Desconectado Desconectado

Mensajes: 247



Ver Perfil
Re: Problema con arbol en ubuntu
« Respuesta #3 en: 28 Abril 2010, 00:45 am »

Nada de nada sec la salida de la ejecución del programa peta , alguien sabe que es lo que debo aprender para interpretar el resultado que me muestra la consola?
Código
  1. *** glibc detected *** ./arbol: realloc(): invalid pointer: 0xbf85d614 ***
  2. ======= Backtrace: =========
  3. /lib/tls/i686/cmov/libc.so.6[0x699ff1]
  4. /lib/tls/i686/cmov/libc.so.6(realloc+0x2b8)[0x69fa38]
  5. /lib/tls/i686/cmov/libc.so.6(realloc+0x2d0)[0x69fa50]
  6. ./arbol[0x8048735]
  7. ./arbol[0x8048549]
  8. /lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe6)[0x645b56]
  9. ./arbol[0x80483c1]
  10. ======= Memory map: ========
  11. 00492000-00493000 r-xp 00000000 00:00 0          [vdso]
  12. 0062f000-0076d000 r-xp 00000000 08:05 377255     /lib/tls/i686/cmov/libc-2.10.1.so
  13. 0076d000-0076e000 ---p 0013e000 08:05 377255     /lib/tls/i686/cmov/libc-2.10.1.so
  14. 0076e000-00770000 r--p 0013e000 08:05 377255     /lib/tls/i686/cmov/libc-2.10.1.so
  15. 00770000-00771000 rw-p 00140000 08:05 377255     /lib/tls/i686/cmov/libc-2.10.1.so
  16. 00771000-00774000 rw-p 00000000 00:00 0
  17. 00b25000-00b41000 r-xp 00000000 08:05 327685     /lib/libgcc_s.so.1
  18. 00b41000-00b42000 r--p 0001b000 08:05 327685     /lib/libgcc_s.so.1
  19. 00b42000-00b43000 rw-p 0001c000 08:05 327685     /lib/libgcc_s.so.1
  20. 00c72000-00c8d000 r-xp 00000000 08:05 327732     /lib/ld-2.10.1.so
  21. 00c8d000-00c8e000 r--p 0001a000 08:05 327732     /lib/ld-2.10.1.so
  22. 00c8e000-00c8f000 rw-p 0001b000 08:05 327732     /lib/ld-2.10.1.so
  23. 08048000-08049000 r-xp 00000000 08:05 10223911   /home/diego/Documentos/fuente/arbol
  24. 08049000-0804a000 r--p 00000000 08:05 10223911   /home/diego/Documentos/fuente/arbol
  25. 0804a000-0804b000 rw-p 00001000 08:05 10223911   /home/diego/Documentos/fuente/arbol
  26. 080ff000-08120000 rw-p 00000000 00:00 0          [heap]
  27. b78db000-b78dc000 rw-p 00000000 00:00 0
  28. b78ec000-b78ef000 rw-p 00000000 00:00 0
  29. bf84a000-bf85f000 rw-p 00000000 00:00 0          [stack]
  30. Pos:0  ele:8Cancelado
  31.  
  32.  
En línea

Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.
Gallu

Desconectado Desconectado

Mensajes: 247



Ver Perfil
Re: Problema con arbol en ubuntu
« Respuesta #4 en: 28 Abril 2010, 12:24 pm »

Estoy viendo que el problemas es el realloc  que no me reserva más memoria , el puntero *array en arbol_to_array  siempre mide 4 , alguien sabe por que sucede?
En línea

Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con vector a partir de una lista en árbol AVL.
Programación C/C++
lord_azareus 0 1,797 Último mensaje 2 Junio 2014, 22:56 pm
por lord_azareus
problema con un arbol en una pila
Java
m@o_614 0 1,408 Último mensaje 3 Enero 2015, 05:42 am
por m@o_614
Problema de violación de acceso. Árbol recubridor
Programación C/C++
FranAI 1 4,807 Último mensaje 15 Noviembre 2021, 09:28 am
por Eternal Idol
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines