k0mZ

Untitled

May 10th, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.11 KB | None | 0 0
  1. #pragma once
  2. #include <iostream>
  3. using namespace std;
  4. #include "StaticStack.h";
  5.  
  6. class GraphAsArrays
  7. {
  8. private:
  9. int* nodes;
  10. int** adjecencyMatrix;
  11. int numberOfNodes;
  12. int maxNumberOfNodes;
  13. public:
  14. GraphAsArrays(int n)
  15. {
  16. nodes = new int[n];
  17. adjecencyMatrix = new int*[n];
  18. for (int i = 0; i<n; i++)
  19. adjecencyMatrix[i] = new int[n];
  20. for (int i = 0; i<n; i++)
  21. for (int j = 0; j<n; j++)
  22. adjecencyMatrix[i][j] = 0;
  23. maxNumberOfNodes = n;
  24. numberOfNodes = 0;
  25. }
  26.  
  27. ~GraphAsArrays()
  28. {
  29. if (nodes != NULL)
  30. delete[] nodes;
  31. if (adjecencyMatrix != NULL)
  32. {
  33. for (int i = 0; i<numberOfNodes; i++)
  34. delete[] adjecencyMatrix[i];
  35. delete[] adjecencyMatrix;
  36. }
  37. }
  38.  
  39. void printGraph()
  40. {
  41. if (numberOfNodes == 0)
  42. {
  43. cout << "Graf je prazan" << endl;
  44. return;
  45. }
  46. for (int i = 0; i<numberOfNodes; i++)
  47. {
  48. cout << nodes[i] << ": ";
  49. for (int j = 0; j<maxNumberOfNodes; j++)
  50. if (adjecencyMatrix[i][j] == 1)
  51. cout << nodes[j] << " ";
  52. cout << endl;
  53. }
  54. }
  55.  
  56. void insertNode(int n)
  57. {
  58. if (numberOfNodes == maxNumberOfNodes)
  59. throw "Graf je pun";
  60. nodes[numberOfNodes++] = n;
  61. }
  62.  
  63. void insertEdge(int n1, int n2)
  64. {
  65. int pom1 = findNode(n1);
  66. int pom2 = findNode(n2);
  67. if (pom1 == -1 || pom2 == -1)
  68. return;
  69. adjecencyMatrix[pom1][pom2] = 1;
  70. }
  71. int findNode(int n)
  72. {
  73. int i = 0;
  74. while (i<numberOfNodes)
  75. {
  76. if (nodes[i] == n)
  77. return i;
  78. i++;
  79. }
  80. return -1;
  81. }
  82.  
  83. int DFS()
  84. {
  85. bool* visited = new bool[this->numberOfNodes];
  86. for (int i = 0; i < this->numberOfNodes; i++)
  87. visited[i] = false;
  88.  
  89. Stek* a = new Stek(this->numberOfNodes);
  90. int obidjenih = 0;
  91.  
  92. a->push(nodes[0]);
  93.  
  94.  
  95. while (!a->isEmpty())
  96. {
  97. int j = a->pop();
  98. cout << j << " ";
  99.  
  100. int k = findNode(j);
  101.  
  102. obidjenih++;
  103. visited[k] = true;
  104. int i = 0;
  105. while (i < numberOfNodes)
  106. {
  107. //po kolonama trazi susede
  108. if (!visited[i] &&
  109. this->adjecencyMatrix[k][i] == 1)
  110. a->push(nodes[i]);
  111. i++;
  112. }
  113.  
  114.  
  115. }
  116.  
  117. return obidjenih;
  118. }
  119.  
  120.  
  121.  
  122.  
  123. bool isSC()
  124. {
  125.  
  126. }
  127. };
Add Comment
Please, Sign In to add comment