50% encontró este documento útil (8 votos)
18K vistas3 páginas

Implementación de Grafos en C++

Este documento describe un programa para representar gráficos mediante una lista de adyacencia. El programa permite ingresar nodos y aristas de un gráfico, almacenándolos en una estructura de lista enlazada. Luego, el programa imprime la lista de adyacencia para mostrar el gráfico creado. El programa contiene menús para seleccionar las opciones de ingreso y impresión del gráfico.

Cargado por

cfirot
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd
50% encontró este documento útil (8 votos)
18K vistas3 páginas

Implementación de Grafos en C++

Este documento describe un programa para representar gráficos mediante una lista de adyacencia. El programa permite ingresar nodos y aristas de un gráfico, almacenándolos en una estructura de lista enlazada. Luego, el programa imprime la lista de adyacencia para mostrar el gráfico creado. El programa contiene menús para seleccionar las opciones de ingreso y impresión del gráfico.

Cargado por

cfirot
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd

//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;
}
}

También podría gustarte