t2-14
t2-14
// Stack node
struct StackNode {
int data;
StackNode* next;
};
public:
Stack() { top = nullptr; }
bool isEmpty() {
return top == nullptr;
}
int pop() {
if (isEmpty()) {
cout << "Stack Underflow\n";
return -1;
}
StackNode* temp = top;
int value = top->data;
top = top->next;
delete temp;
return value;
}
int peek() {
if (!isEmpty())
return top->data;
return -1;
}
~Stack() {
while (!isEmpty())
pop();
}
};
// Graph class
class Graph {
private:
int numVertices;
Node** adjLists;
bool* visited;
public:
Graph(int vertices) {
numVertices = vertices;
adjLists = new Node*[numVertices];
visited = new bool[numVertices];
Stack stack;
stack.push(startVertex);
visited[startVertex] = true;
cout << "DFS traversal from vertex " << startVertex << ": ";
while (!stack.isEmpty()) {
int current = stack.pop();
cout << current << " ";
~Graph() {
for (int i = 0; i < numVertices; i++) {
Node* temp = adjLists[i];
while (temp != nullptr) {
Node* toDelete = temp;
temp = temp->next;
delete toDelete;
}
}
delete[] adjLists;
delete[] visited;
}
};
int main() {
Graph g(7); // Vertices: 0 to 6
// Maze-style connections
g.addEdge(0, 1);
g.addEdge(0, 2);
g.addEdge(1, 3);
g.addEdge(2, 3);
g.addEdge(3, 4);
g.addEdge(4, 5);
g.addEdge(4, 6);
return 0;
}