fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <stdbool.h>
  4.  
  5. #define MAX 5
  6.  
  7. struct Vertex {
  8. char label;
  9. bool visited;
  10. };
  11.  
  12. //queue variables
  13.  
  14. int queue[MAX];
  15. int rear = -1;
  16. int front = 0;
  17. int queueItemCount = 0;
  18.  
  19. //graph variables
  20.  
  21. //array of vertices
  22. struct Vertex* lstVertices[MAX];
  23.  
  24. //adjacency matrix
  25. int adjMatrix[MAX][MAX];
  26.  
  27. //vertex count
  28. int vertexCount = 0;
  29.  
  30. //queue functions
  31.  
  32. void insert(int data) {
  33. queue[++rear] = data;
  34. queueItemCount++;
  35. }
  36.  
  37. int removeData() {
  38. queueItemCount--;
  39. return queue[front++];
  40. }
  41.  
  42. bool isQueueEmpty() {
  43. return queueItemCount == 0;
  44. }
  45.  
  46. //graph functions
  47.  
  48. //add vertex to the vertex list
  49. void addVertex(char label) {
  50. struct Vertex* vertex = (struct Vertex*) malloc(sizeof(struct Vertex));
  51. vertex->label = label;
  52. vertex->visited = false;
  53. lstVertices[vertexCount++] = vertex;
  54. }
  55.  
  56. //add edge to edge array
  57. void addEdge(int start,int end) {
  58. adjMatrix[start][end] = 1;
  59. adjMatrix[end][start] = 1;
  60. }
  61.  
  62. //display the vertex
  63. void displayVertex(int vertexIndex) {
  64. printf("%c ",lstVertices[vertexIndex]->label);
  65. }
  66.  
  67. //get the adjacent unvisited vertex
  68. int getAdjUnvisitedVertex(int vertexIndex) {
  69. int i;
  70.  
  71. for(i = 0; i<vertexCount; i++) {
  72. if(adjMatrix[vertexIndex][i] == 1 && lstVertices[i]->visited == false)
  73. return i;
  74. }
  75.  
  76. return -1;
  77. }
  78.  
  79. void breadthFirstSearch() {
  80. int i;
  81.  
  82. //mark first node as visited
  83. lstVertices[0]->visited = true;
  84.  
  85. //display the vertex
  86. displayVertex(0);
  87.  
  88. //insert vertex index in queue
  89. insert(0);
  90. int unvisitedVertex;
  91.  
  92. while(!isQueueEmpty()) {
  93. //get the unvisited vertex of vertex which is at front of the queue
  94. int tempVertex = removeData();
  95.  
  96. //no adjacent vertex found
  97. while((unvisitedVertex = getAdjUnvisitedVertex(tempVertex)) != -1) {
  98. lstVertices[unvisitedVertex]->visited = true;
  99. displayVertex(unvisitedVertex);
  100. insert(unvisitedVertex);
  101. }
  102.  
  103. }
  104.  
  105. //queue is empty, search is complete, reset the visited flag
  106. for(i = 0;i<vertexCount;i++) {
  107. lstVertices[i]->visited = false;
  108. }
  109. }
  110.  
  111. int main() {
  112. int i, j;
  113.  
  114. for(i = 0; i<MAX; i++) // set adjacency {
  115. for(j = 0; j<MAX; j++) // matrix to 0
  116. adjMatrix[i][j] = 0;
  117. }
  118.  
  119. addVertex('S'); // 0
  120. addVertex('A'); // 1
  121. addVertex('B'); // 2
  122. addVertex('C'); // 3
  123. addVertex('D'); // 4
  124.  
  125. addEdge(0, 1); // S - A
  126. addEdge(0, 2); // S - B
  127. addEdge(0, 3); // S - C
  128. addEdge(1, 4); // A - D
  129. addEdge(2, 4); // B - D
  130. addEdge(3, 4); // C - D
  131.  
  132. printf("\nBreadth First Search: ");
  133.  
  134. breadthFirstSearch();
  135.  
  136. return 0;
  137. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
Main.java:1: error: illegal character: '#'
#include <stdio.h>
^
Main.java:1: error: class, interface, or enum expected
#include <stdio.h>
         ^
Main.java:2: error: illegal character: '#'
#include <stdlib.h>
^
Main.java:3: error: illegal character: '#'
#include <stdbool.h>
^
Main.java:5: error: illegal character: '#'
#define MAX 5
^
Main.java:9: error: class, interface, or enum expected
   bool visited;
   ^
Main.java:10: error: class, interface, or enum expected
};
^
Main.java:14: error: class, interface, or enum expected
int queue[MAX];
^
Main.java:15: error: class, interface, or enum expected
int rear = -1;
^
Main.java:16: error: class, interface, or enum expected
int front = 0;
^
Main.java:17: error: class, interface, or enum expected
int queueItemCount = 0;
^
Main.java:22: error: class, interface, or enum expected
struct Vertex* lstVertices[MAX];
^
Main.java:25: error: class, interface, or enum expected
int adjMatrix[MAX][MAX];
^
Main.java:28: error: class, interface, or enum expected
int vertexCount = 0;
^
Main.java:32: error: class, interface, or enum expected
void insert(int data) {
^
Main.java:34: error: class, interface, or enum expected
   queueItemCount++;
   ^
Main.java:35: error: class, interface, or enum expected
}
^
Main.java:39: error: class, interface, or enum expected
   return queue[front++]; 
   ^
Main.java:40: error: class, interface, or enum expected
}
^
Main.java:44: error: class, interface, or enum expected
}
^
Main.java:51: error: class, interface, or enum expected
   vertex->label = label;  
   ^
Main.java:52: error: class, interface, or enum expected
   vertex->visited = false;     
   ^
Main.java:53: error: class, interface, or enum expected
   lstVertices[vertexCount++] = vertex;
   ^
Main.java:54: error: class, interface, or enum expected
}
^
Main.java:59: error: class, interface, or enum expected
   adjMatrix[end][start] = 1;
   ^
Main.java:60: error: class, interface, or enum expected
}
^
Main.java:65: error: class, interface, or enum expected
}       
^
Main.java:71: error: class, interface, or enum expected
   for(i = 0; i<vertexCount; i++) {
   ^
Main.java:71: error: class, interface, or enum expected
   for(i = 0; i<vertexCount; i++) {
              ^
Main.java:71: error: class, interface, or enum expected
   for(i = 0; i<vertexCount; i++) {
                             ^
Main.java:74: error: class, interface, or enum expected
   }
   ^
Main.java:77: error: class, interface, or enum expected
}
^
Main.java:83: error: class, interface, or enum expected
   lstVertices[0]->visited = true;
   ^
Main.java:86: error: class, interface, or enum expected
   displayVertex(0);   
   ^
Main.java:89: error: class, interface, or enum expected
   insert(0);
   ^
Main.java:90: error: class, interface, or enum expected
   int unvisitedVertex;
   ^
Main.java:92: error: class, interface, or enum expected
   while(!isQueueEmpty()) {
   ^
Main.java:97: error: class, interface, or enum expected
      while((unvisitedVertex = getAdjUnvisitedVertex(tempVertex)) != -1) {    
      ^
Main.java:99: error: class, interface, or enum expected
         displayVertex(unvisitedVertex);
         ^
Main.java:100: error: class, interface, or enum expected
         insert(unvisitedVertex);               
         ^
Main.java:101: error: class, interface, or enum expected
      }
      ^
Main.java:106: error: class, interface, or enum expected
   for(i = 0;i<vertexCount;i++) {
             ^
Main.java:106: error: class, interface, or enum expected
   for(i = 0;i<vertexCount;i++) {
                           ^
Main.java:108: error: class, interface, or enum expected
   }    
   ^
Main.java:114: error: class, interface, or enum expected
   for(i = 0; i<MAX; i++) // set adjacency {
   ^
Main.java:114: error: class, interface, or enum expected
   for(i = 0; i<MAX; i++) // set adjacency {
              ^
Main.java:114: error: class, interface, or enum expected
   for(i = 0; i<MAX; i++) // set adjacency {
                     ^
Main.java:115: error: class, interface, or enum expected
      for(j = 0; j<MAX; j++) // matrix to 0
                 ^
Main.java:115: error: class, interface, or enum expected
      for(j = 0; j<MAX; j++) // matrix to 0
                        ^
Main.java:117: error: class, interface, or enum expected
   }
   ^
Main.java:120: error: class, interface, or enum expected
   addVertex('A');   // 1
   ^
Main.java:121: error: class, interface, or enum expected
   addVertex('B');   // 2
   ^
Main.java:122: error: class, interface, or enum expected
   addVertex('C');   // 3
   ^
Main.java:123: error: class, interface, or enum expected
   addVertex('D');   // 4
   ^
Main.java:125: error: class, interface, or enum expected
   addEdge(0, 1);    // S - A
   ^
Main.java:126: error: class, interface, or enum expected
   addEdge(0, 2);    // S - B
   ^
Main.java:127: error: class, interface, or enum expected
   addEdge(0, 3);    // S - C
   ^
Main.java:128: error: class, interface, or enum expected
   addEdge(1, 4);    // A - D
   ^
Main.java:129: error: class, interface, or enum expected
   addEdge(2, 4);    // B - D
   ^
Main.java:130: error: class, interface, or enum expected
   addEdge(3, 4);    // C - D
   ^
Main.java:132: error: class, interface, or enum expected
   printf("\nBreadth First Search: ");
   ^
Main.java:134: error: class, interface, or enum expected
   breadthFirstSearch();
   ^
Main.java:136: error: class, interface, or enum expected
   return 0;
   ^
Main.java:137: error: class, interface, or enum expected
}
^
64 errors
stdout
Standard output is empty