Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #define MAX 5
- int dijkstra(int *nodes[MAX],int initialNode,int destinationNode,int *weightMatrix[MAX][MAX]);
- struct link{
- int targetNode_id;
- int weight;
- };
- struct node{
- int id;
- link links[4];
- };
- int main(){
- //initialize variables
- int i,j;
- int weightsMatrix[MAX][MAX] = {{0,100,800,0,0},{0,0,0,300,600},{0,200,0,500,0},{0,0,0,0,0},{0,0,0,200,0}};
- node initialNode;
- node nodes[MAX];
- initialNode = nodes[0];
- //assigning nodes ids
- for(i = 0; i < MAX; i++){
- nodes[i].id = i;
- }
- for(int nodeIndex = 0; nodeIndex < MAX; nodeIndex++){
- int linkCount = 0;
- node nodeInstance = node();
- nodeInstance.id = nodeIndex;
- //printf("Node Instance ID: %d\n ",nodeInstance.id);
- for(int weightIndex = 0; weightIndex < MAX; weightIndex++){
- if(0 != weightsMatrix[nodeIndex][weightIndex])
- {
- nodeInstance.links[linkCount].targetNode_id = weightIndex;
- //printf("\tLink index: %d\n\t\tSource: %d\n\t\tTarget: %d\n\t\tWeight: %d\n\n\n", linkCount, nodeInstance.id, weightIndex, weightsMatrix[nodeIndex][weightIndex]);
- nodeInstance.links[linkCount].weight = weightsMatrix[nodeIndex][weightIndex];
- linkCount++;
- }
- }
- nodes[nodeIndex] = nodeInstance;
- }
- }
- int dijkstra(node *nodes[MAX],node initialNode,node destinationNode,int *weightMatrix[MAX][MAX]){
- initialNode = nodes[0]->id;
- destinationNode = nodes[4]->id;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement