blob: 734e8e60e40b68124c1dd10447e444f30dd71cbc [file] [log] [blame]
#include "route.h"
void readgraph( FILE *fp )
{
char input[32] ;
int node1 , node2 , length , capacity , edge , i , test ;
GNODEPTR gptr ;
numnodes = 0 ;
edge = 0 ;
while( fscanf( fp , " %s " , input ) == 1 ) {
if( strcmp( input , "edge") == 0 ) {
edge++ ;
test = fscanf( fp , " %d %d " , &node1 , &node2 ) ;
if( test != 2 ) {
fprintf( fpo, "Failed to input a pair of nodes ");
fprintf( fpo, "following keyword edge in the .gph file\n");
fprintf( fpo, "Current edge: %d\n", edge ) ;
exit(0);
}
if( node1 > numnodes ) {
numnodes = node1 ;
}
if( node2 > numnodes ) {
numnodes = node2 ;
}
fscanf( fp , " %s " , input ) ;
if( strcmp( input , "length") == 0 ) {
test = fscanf( fp , " %d " , &length ) ;
if( test != 1 ) {
fprintf( fpo, "Failed to input length ");
fprintf( fpo, "in the .gph file\n");
fprintf( fpo, "Current edge: %d\n", edge ) ;
exit(0);
}
} else {
fprintf( fpo, "Failed to find keyword: length ");
fprintf( fpo, "for an edge\n") ;
fprintf( fpo, "Current edge: %d\n", edge ) ;
exit(0) ;
}
fscanf( fp , " %s " , input ) ;
if( strcmp( input , "capacity") == 0 ) {
test = fscanf( fp , " %d " , &capacity ) ;
if( test != 1 ) {
fprintf( fpo, "Failed to input capacity ");
fprintf( fpo, "in the .gph file\n");
fprintf( fpo, "Current edge: %d\n", edge ) ;
exit(0);
}
} else {
fprintf( fpo, "Failed to find keyword: capacity ");
fprintf( fpo, "for an edge\n") ;
fprintf( fpo, "Current edge: %d\n", edge ) ;
exit(0) ;
}
} else {
fprintf( fpo, "Found unknown string when attempting ");
fprintf( fpo, "to find keyword: edge in the .gph file\n") ;
fprintf( fpo, "instead found: %s\n", input ) ;
fprintf( fpo, "Current edge: %d\n", edge ) ;
exit(0) ;
}
}
rewind( fp ) ;
gnodeArray = (GNODEPTR *) malloc( (numnodes + 1) * sizeof(GNODEPTR) ) ;
for( i = 1 ; i <= numnodes ; i++ ) {
gnodeArray[i] = (GNODEPTR) NULL ;
}
while( fscanf( fp , " %s " , input ) == 1 ) {
if( strcmp( input , "edge") == 0 ) {
fscanf( fp , " %d %d " , &node1 , &node2 ) ;
fscanf( fp , " %s " , input ) ;
fscanf( fp , " %d " , &length ) ;
fscanf( fp , " %s " , input ) ;
fscanf( fp , " %d " , &capacity ) ;
gptr = gnodeArray[node1] ;
gnodeArray[node1] =(GNODEPTR) malloc( sizeof(GNODE) ) ;
gnodeArray[node1]->next = gptr ;
gnodeArray[node1]->node = node2 ;
gnodeArray[node1]->length = length ;
gnodeArray[node1]->ilength = length ;
gnodeArray[node1]->cost = length ;
gnodeArray[node1]->capacity = capacity ;
gnodeArray[node1]->inactive = 0 ;
gnodeArray[node1]->einactive = 0 ;
gptr = gnodeArray[node2] ;
gnodeArray[node2] =(GNODEPTR) malloc( sizeof(GNODE) ) ;
gnodeArray[node2]->next = gptr ;
gnodeArray[node2]->node = node1 ;
gnodeArray[node2]->length = length ;
gnodeArray[node2]->ilength = length ;
gnodeArray[node2]->cost = length ;
gnodeArray[node2]->capacity = capacity ;
gnodeArray[node2]->inactive = 0 ;
gnodeArray[node2]->einactive = 0 ;
}
}
return ;
}