Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Grafo en Dev C
Grafo en Dev C
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 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; }