#include <stdio.h>
#include <conio.h>
#include <ctype.h>
#include <stdlib.h>
#define N 50
struct grafo
{
int dato;
struct grafo *grafo[N];
struct grafo *sig;
}*Pgrafo;
/*PROTOTIPOS*/
int vacio( struct grafo *mat );
struct grafo *insertar( struct grafo *nodo, struct grafo *Agrafo, int num );
int enlazarfull( struct grafo *nodo );
void menu_enlazes( void );
int vacio( struct grafo *mat )
{
int cont=1;
while( mat )
{
if( mat->dato )
{
cont++;
mat= mat->sig;
}
}
return cont;
}
struct grafo *insertar( struct grafo *nodo, struct grafo *Agrafo, int num )
{
if( !Agrafo )
{
Agrafo= (struct grafo*) malloc( sizeof( struct grafo ) );
Agrafo->sig= NULL;
Agrafo->dato= num;
if( !nodo ) return Agrafo;
else nodo->sig= Agrafo;
return Agrafo;
}
insertar( Agrafo, Agrafo->sig, num );
return nodo;
}
int enlazarfull( struct grafo *nodo )
{
int i;
if( !nodo->sig ) return 0;
for( i=0; i<vacio( nodo ); i++ )
nodo->grafo[i]= NULL;
/*aqui falta.... Aqui voy apenas :D*/
return 1;
}
/*MENUS DE GRAFOS*/
void menu_enlazes( void )
{
char _op='A';
int arista;
while( _op!='3' )
{
clrscr();
printf( "1-Enlazar Nodos ya enlazado." );
printf( "\n2-Enlazar Nodo\(s\) Nuevo\(s\)." );
printf( "\n3-Salir." );
printf( "\n\n:: " );
_op= toupper( getch() );
switch( _op )
{
case '1':
break;
case '2':
arista= enlazarfull( Pgrafo );
if( !arista ) printf( "\n\nImposible... Solo existe un nodo." );
else printf( "\n\nListo !!!" );
getch();
break;
}
}
}
int main()
{
char _op='A';
int val;
while( _op!='S' )
{
clrscr();
printf( "-Nuevo Nodo." );
printf( "\n-Enlazes." );
printf( "\n-Ver Grafo." );
printf( "\n-Salir." );
printf( "\n\n:: " );
_op= toupper( getch() );
switch( _op )
{
case 'N':
printf( "\n\nNumero: " );
scanf( "%i", &val );
Pgrafo= insertar( Pgrafo, Pgrafo, val );
break;
case 'E':
menu_enlazes();
break;
case 'V':
break;
}
}
printf( "\n\nPulsa para salir..." );
getch();
return 0;
}