Está en la página 1de 7

Ads by Google

Ofertas en Spa El DF
1 Oferta Genial x Día
Mejores Spas y Retiros Del DF!
www.GROUPON.com.mx/Ciudad-de-Mexico

Programming & Source Code


Learn About Source Code Object Code
Executable Code in C++ Programming
ComputerTechStuff.com

C++ Database
High Scalability, High Availability
Large Data Sets, High Performance
www.versant.com/objectdatabase

Learn C Programming
Basic-Advanced Programming Courses
Easily Learn to Program in C -Fast!
www.e-learningcenter.com

//http://www.inguta.cl/wp/?p=280
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
void ingresar_grafo();
void imprimir_grafo();
int w =0;
int n;
typedef struct nodo
{
int dato;
struct nodo *sgte;

}nodo;

nodo *vector[20],*actual;

main()
{int opcion;
do
{
system("CLS");
printf("\n\t\t\t\t***MENU***\n");
printf("\n\n Diagrama De Pert\n");
printf("\n * Solo trabajar con numeros *\n\n");
printf("\n 1.- Ingresar Nodos");
printf("\n 2.- Imprimir Diagrama:");
printf("\n 3.- SALIR");
printf("\n\n Ingrese una opcion: ");
cin>>opcion;
if(opcion>3 || opcion<0)
{
printf("\n Opcion NO VALIDA concentrese porfavor");
printf("\n\n ** PRESIONE CUALQUIER TECLA PARA VOLVER AL MENU **");
getch();
}switch(opcion)

case 1:
ingresar_grafo();
break;
case 2:
imprimir_grafo();
break;

case 3:
opcion=0;
}
}while(opcion!=0);
getch();
}void ingresar_grafo()
{
int i,m,j,valor, x[20],y[20];
printf( "Ingrese n: ");
cin>>n;
for(i=0;i<n;i++)
adyacente:
{
y[i]=i+1;
if(i==n-1)
{
printf("\n\nNodo final\n");
}printf("Ingrese numero de vertices adyacentes a %d:",i+1);
cin>>m;
if(i==n-1)
{
m=0;
printf("No Se Puede Poner Un Nodo Adyacente Al Nodo
Final\n\n");
getch();
}if(m==0 && i!=n-1)
{
printf("Debe Se alar a Un Nodo\n\n");

getch();
goto adyacente;
}for(j=0;j<m;j++)
{
intenta:
printf("Ingrese vertice:");
cin>>valor;
if(valor==i+1)
{
printf("No Puedes Apuntar Al Mismo
Nodo\n\n");
goto intenta;
}x[j]=valor;
if(valor==1)
{
printf("No Puedes Apuntar Al Nodo
Inicio\n\n");
goto intenta;
}if(valor>n||valor<1)

{
printf("No Puedes Crear Mas Nodos De Los
Preestablecidos\n\n");
goto intenta;
}for(int h=0 ;h!=j;h++)

if(x[h]==x[j])
{
printf("No Puedes Apuntar 2
veces A Un Nodo\n\n");
goto intenta;
}
}if(i>2)

for(int h=i ;h>2;h--)


{
for(int hh=0;hh!=j;h++)
{
if(y[h]==x[hh])
{
pr
intf("No Puedes Apuntar A Un Nodo Que Y Haya Se alado A Este\n\n");

go
to intenta;
}
}
}
}actual = (nodo *) malloc(sizeof(nodo));
actual->dato = valor;
actual->sgte = vector[i];
vector[i] = actual;
}
}w=n;
}void imprimir_grafo()
{
int i;
for(i=0;i<w;i++)

printf("\nAdyacente al nodo %d: ",i+1);


actual=vector[i];
while(actual != NULL)
{
printf("% d", actual->dato);
getch();
actual = actual->sgte;
}
}
}

 Suma Recursiva – Lenguaje C

Enlaces

 Foro
 GrafCreativo
 Trukazo
 Universidad Tarapaca

Nodos Adyacentes en Grafo – Lenguaje C


16 de Septiembre de 2009 | Autor: skandelabro

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void buscar();
void bpp();
void ingresar_grafo();
void imprimir_grafo();

typedef struct nodo_t{


int dato;
struct nodo_t *sgte;
}nodo;

nodo *vector[5]={NULL,NULL,NULL,NULL,NULL},*actual;
int marca[5];
int n;

main()
{

int opcion;
fflush(stdin);
do
{
system("color ");
system("CLS");
printf("\n\t\t\t\t***MENU***\n");
printf("\n\n Trabajo Grafos\n");
printf("\n * Solo trabajar con numeros *\n\n");

printf(" ---Trabajar con grafos---\n");


printf("\n 1.- Ingresar Grafo");
printf("\n 2.- Imrpimir Grafo:");
printf("\n 3.- Recorrer Grafo:");
printf("\n 4.- SALIR");

printf("\n\n * Para Salir Presione 4: ");

printf("\n\n Ingrese una opcion: ");


scanf("%d",&amp;amp;amp;amp;amp;opcion);
printf("\n");

if(opcion>4)
{
printf("\n Opcion NO VALIDA concentrese porfavor");
printf("\n\n ** PRESIONE CUALQUIER TECLA PARA VOLVER AL MENU **");
getch();
}

switch(opcion)
{
case 1:
ingresar_grafo();
break;

case 2:
imprimir_grafo();
break;

case 3:
buscar();
break;

case 4:
exit(0);
}
}
while(opcion!=0);
getch();
}

void ingresar_grafo()
{
int i,m,j,valor;
printf( "ingrese n: ");
scanf("%d",&amp;amp;amp;amp;amp;n);
for(i=0;i<n;i++)
{
printf("Ingrese numero de vertices adyacentes a %d:",i+1);
scanf("%d",&amp;amp;amp;amp;amp;m);
for(j=0;j<m;j++)
{
printf(" Ingrese vertice:");
scanf("%d",&amp;amp;amp;amp;amp;valor);
actual = (nodo *) malloc(sizeof(nodo));
actual->dato = valor;
actual->sgte = vector[i];
vector[i] = actual;
}
}
}

void imprimir_grafo()
{
int i;
for(i=0;i<5;i++)
{printf("\nAdyacente al nodo %d: ",i+1);
actual=vector[i];
while(actual != NULL)
{
printf("%  d", actual->dato);
getch();
actual = actual->sgte;
}
}

void bpp(int i)
{
int v;
marca[i]=1;
printf("\n Es: %d",i+1);
getch();
actual=vector[i];
while(actual!=NULL)
{
if(marca[actual->dato-1]==0)
bpp(actual->dato-1);
actual = actual->sgte;
}
}
void buscar()
{
int i,v;
for(i=1;i<n;i++)

marca[i]=0;

for(v=0;v<n;v++)
{
if(marca[v] == 0)
bpp(v);
}
}

AL ingresar los nodos ve cuales valors son adyacentes a los mismos

saludos

Publicado en C

Un comentario para “Nodos Adyacentes en Grafo – Lenguaje C”

 walter dice:

23 Julio 2010 a las 20:13


muchas garcias por el programa es justo lo que buscaba pero el problema es que
cuando lo compili en turbo c me salen 10 errores no entiendo que es lo que tiene
malo o no se si ustedes lo compilaron en otro compilador de c y en turbo c
alomejor no funciona asi

Deja un comentario

Nombre (requerido)

También podría gustarte