C/Visual C - Un solo Error ME ayudan a descubrirlo

 
Vista:

Un solo Error ME ayudan a descubrirlo

Publicado por fernan (2 intervenciones) el 07/03/2006 04:54:14
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <ctype.h>

struct arbol_binario
{
int dato;
struct arbol_binario *izq;
struct arbol_binario *der;
}*raiz;

enum{ FALSO=0, VERDADERO };

void inicializar();
int vacio( struct arbol_binario *hoja );
int eshoja( struct arbol_binario *hoja );
struct arbol_binario *insertar( struct arbol_binario *raiz, struct arbol_binario *hoja, int num );
int busqueda( struct arbol_binario *hoja, int num );
void inorden( struct arbol_binario *hoja );
void menu_recorridos();
void menu_busquedas();

int main()
{
char _op='A';
int valor;

inicializar();

while( _op!='S' )
{
system("cls");
printf( "Insertar." );
printf( "\nRecorridos." );
printf( "\nSalir." );
printf( "\n\n" );
_op= toupper( getch() );
switch( _op )
{
case 'I':
printf( "\n\nInsertar valor: " );
scanf( "%i", &valor );
if( busqueda( raiz, valor ) )
{
printf( "\n\nEste numero ya ha sido insertado." );
getch();
break;
}
raiz= insertar( raiz, raiz, valor );
break;

case 'R':
if( vacio( raiz ) )
{
printf( "\n\nEl Arbol Aun esta Vacio." );
getch();
break;
}
printf("El recorrido del arbol en orden es:\n");
inorden( raiz );
getch();
break;
}
}
printf( "\n\nPulsa para salir..." );
getchar();
return 0;
}

void inicializar( void )
{
raiz= NULL;
}

int vacio( struct arbol_binario *hoja )
{
if( !hoja ) return VERDADERO;
return FALSO;
}

int eshoja( struct arbol_binario *hoja )
{
if( hoja->izq==NULL && hoja->der==NULL )
return VERDADERO;
return FALSO;
}

struct arbol_binario *insertar( struct arbol_binario *raiz, struct arbol_binario *hoja, int num )
{
if( !hoja )
{
hoja= (struct arbol_binario *) malloc( sizeof (struct arbol_binario) );
hoja->dato= num;
hoja->izq= NULL;
hoja->der= NULL;
if( !raiz ) return hoja;
else if( num<raiz->dato ) raiz->izq= hoja;
else raiz->der= hoja;
return hoja;
}
else if( num<hoja->dato )
insertar( hoja, hoja->izq, num );
else insertar( hoja, hoja->der, num );
return raiz;
}

int busqueda( struct arbol_binario *hoja, int num )
{
while( hoja )
{
if( num==hoja->dato ) return VERDADERO;
else
{
if( num<hoja->dato ) hoja= hoja->izq;
else hoja= hoja->der;
}
}
return FALSO;
}

void inorden( struct arbol_binario *hoja )
{
if( !hoja ) return;

inorden( hoja->izq );
printf( "%i ", hoja->dato );
inorden( hoja->der );
}

void menu_busquedas( void )
{
int valor;

printf( "\n\nNumero: " );
scanf( "%i", &valor );
if( busqueda( raiz, valor ) )
printf( "\n\nEncontrado.." );
else printf( "\n\nError, No se encuentra." );
getch();
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder