Está en la página 1de 3

//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 Sealar 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 } x[j]=valor; if(valor==1) { Inicio\n\n"); printf("No Puedes Apuntar Al Nodo goto intenta; } if(valor>n||valor<1) goto intenta;

Nodo\n\n");

{ Preestablecidos\n\n"); printf("No Puedes Crear Mas Nodos De Los goto intenta; } for(int h=0 ;h!=j;h++) { if(x[h]==x[j]) { veces A Un Nodo\n\n"); } } if(i>2) { printf("No Puedes Apuntar 2 goto intenta;

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 Sealado 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