Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Please write the complete code in C. Write a C function that prints the minimum spanning tree of a graph. At the end, print the

Please write the complete code in C.

Write a C function that prints the minimum spanning tree of a graph. At the end, print the weight of the spanning tree. A suggested report format is shown in the following example. Source Vertex To Vertex Weight A B 2 A C 4 B D 3 D E 1 Total weight of spanning tree: 10 Your main program will read a graph from DataIn file to an adjacency table before calling the function.

There is a 'skeleton code' given, so can someone just fill it up:

//Q4 //Find out the minimum spanning tree (MST) of a graph which is stored in **AM1 //The MST will be stored in AM2. //The output format should follow the specification

#include #include #include #include

#define INFINITY 0 #define MAXNODE 26

// Pointer to the file you want to read and write. FILE *fp;

int NumberOfNode = 0;

// Initialize the Adjacency table **AM // In this function, you should set all elements in the Adjacency table to INFINITY void InitAM(int **AM) { //********* //Add your code here //********* //********* }

//Read the Graph from the input file to **AM // int ReadGraph(int **AM) { //open file fp = fopen ("DataIn.txt", "r"); if (fp == NULL) { printf("Unable to open file."); return 0; } else { int i = 0; // get the number of nodes of the graph fscanf (fp, "%d ", &NumberOfNode); for (;i< NumberOfNode;i++ ) { int NodeOfLine = 0; int NumberOfNodesLine = 0; int node = 0; int weight = INFINITY;

//get the current node fscanf (fp, "%d", &NodeOfLine);

if(NodeOfLine == (i+1)) { int j=0;

//get the number of nodes connected to the current node fscanf (fp, "%d", &NumberOfNodesLine);

for (;j< NumberOfNodesLine;j++ ) { //get the weight of the link fscanf (fp, "%d", &node); fscanf (fp, "%d", &weight); AM[i][node] = weight; }

fscanf (fp, " ");

} else { return 0; } } } fclose(fp); return 1;

}

//find the minimum spanning tree (MST) from **AM1, and store the MSP in **AM2 // int MPS_tree(int **AM1,int **AM2) { //********* //Add your code here //********* //*********

}

//print out the minimum spanning tree in **AM, as specified in Q4 // void WriteMPS(int ** AM) { //********* //Add your code here //********* //*********

}

///print out the graph in **AM, for testing // In this function, all you have to do is to print every element in the Adjacency table **AM // void WriteGraph(int ** AM) { //********* //Add your code here //********* //********* }

int main( ) { //create two-dimensional array AM1, AM2 // int ** AM1 = (int **) malloc( sizeof(int *) * MAXNODE ); int ** AM2 = (int **) malloc( sizeof(int *) * MAXNODE ); int i; for ( i = 0 ; i < MAXNODE ; i ++ ) { AM1[i] = (int *) malloc( sizeof(int) * MAXNODE ); AM2[i] = (int *) malloc( sizeof(int) * MAXNODE ); }

InitAM(AM1); InitAM(AM2);

if (ReadGraph(AM1) == 0) { return 1; }

if(MPS_tree(AM1,AM2) == 0) { printf("There is no minimun spanning tree!"); return 1; }

WriteMPS( AM2 );

for ( i = 0 ; i < MAXNODE ; i ++ ) { free( AM1[i] ); free( AM2[i] ); } free(AM1); free(AM2);

return 0; }

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image_2

Step: 3

blur-text-image_3

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Learning PostgreSQL

Authors: Salahaldin Juba, Achim Vannahme, Andrey Volkov

1st Edition

178398919X, 9781783989195

More Books

Students also viewed these Databases questions

Question

=+ ^ What is the budget for this project?

Answered: 1 week ago