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)
| | |-+  Duda Arbol
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda Arbol  (Leído 1,738 veces)
Kinamox

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Duda Arbol
« en: 31 Mayo 2018, 05:53 am »

Hola, que tal, escribo con la finalidad de que alguien pueda decirme por que motivo no me imprime los datos ingresados, en preorden...Es como si no almacenara los valores ingresados. Espero saldar la duda, gracias de antemano.
Aqui les dejo el código para que me digan por que no almacena los datos.

Código:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

typedef struct nodo{
int dato;
struct nodo *derecha;
struct nodo *izquierda;
}TTT;

typedef TTT *pNodo;
TTT *arbol = NULL;

/*prototipo*/
TTT *crear(int);
void insertar(TTT *, int);
int preOrden(TTT *);
void menu();

main()
{

menu();

getch();
return 0;
}

/*FUNCION PARA CREAR UN NODO*/
TTT *crear(int n)
{
TTT *nuevo = (pNodo)malloc(sizeof(TTT));
printf("\n Ingresa un nodo: "); scanf("%d",&nuevo->dato);
nuevo->dato = n;
nuevo->derecha = NULL;
nuevo->izquierda = NULL;

return nuevo;
}

/* FUNCION PARA AÑADIR DATOS*/
void insertar(TTT *arbol, int n)
{
if(arbol == NULL)
{
TTT *nuevo = crear(n);
arbol = nuevo;
}
else
{
int ppp = arbol->dato;
if(n < ppp)
{
insertar(arbol->izquierda, n);
}
else
{
insertar(arbol->derecha, n);
}
}
}
/*RECORRIDO EN PREORDEN*/
int preOrden(TTT *arbol)
{
if(arbol == NULL)
{
return ;
}
else
{
printf(" %d -",arbol->dato);
preOrden(arbol->izquierda);
preOrden(arbol->derecha);
}
printf("\n\n\n");
}

//MENU
void menu()
{
int opc,x;

do{
printf("     MENU ARBOL  \n");
printf("1. Insertar nodo\n");
printf("2. PREORDEN\n");
printf("3. Salir\n");
printf("\n  Ingresa una opcion: "); scanf("%d",&opc);

switch(opc)
{
case 1: insertar(arbol,x); break;
case 2: printf("\n Recorrido en preorden: ");
preOrden(arbol); printf("\n\n\n"); break;
case 3: break;
}
system("pause");
system("cls");
}while(opc != 3);
}



En línea

srWhiteSkull


Desconectado Desconectado

Mensajes: 444



Ver Perfil WWW
Re: Duda Arbol
« Respuesta #1 en: 31 Mayo 2018, 21:57 pm »

El problema es que te has lanzado hacer un árbol binario sin saber mucho de punteros en C. No pases el puntero por la función porque en C es desreferenciada. Mejor retornar el puntero como haces en la función crear() o simplemente trabaja con el puntero globalmente que para eso la haz definido en ese ámbito.

Si quieres trabajar con punteros de forma más flexible y segura entonces ponte con C++  ;)

...Luego con el insertar recursivo ese ten cuidado...


« Última modificación: 31 Mayo 2018, 23:14 pm por srWhiteSkull » En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Duda Arbol
« Respuesta #2 en: 31 Mayo 2018, 23:13 pm »

A ver que pasas x a insertar sin haberle dado valor.
Después en insertar pides el dato con scanf y después lo machacas con el valor n del argumento.
main() ¿de qué tipo es? desde el estándar C99, hace ya 19 años, que hay que definir main como int.
preOrden debe devolver un entero pero la tratas como si fuera void.
Has definido pNodo, pero no lo utilizas.

Antes de buscar dónde hay un fallo concreto quita todos los que hay, a lo mejor llegas a ver dónde está cuándo has quitado toda la paja.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda pa las luces de mi arbol de navidad :)
Electrónica
Timi 4 3,615 Último mensaje 21 Diciembre 2004, 09:22 am
por Timi
Duda:Arbol genealogico en java
Java
Mioshi 4 9,473 Último mensaje 30 Noviembre 2011, 20:08 pm
por Mioshi
Duda con respecto a la materia de los TDA Arbol
Dudas Generales
OiciTrap 1 2,169 Último mensaje 22 Junio 2013, 14:50 pm
por ivancea96
duda con recorridos en arbol
Programación C/C++
andoporto 0 1,481 Último mensaje 26 Febrero 2015, 01:49 am
por andoporto
Duda para programar Arbol de Procesos en C - OS Linux
Programación C/C++
donself 0 2,149 Último mensaje 20 Mayo 2016, 18:49 pm
por donself
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines