# Implement DFS and BFS in C++ using Stack and Queue

> Implement Depth First Search (DFS) and Breadth First Search (BFS) algorithms in C++ using a stack and a queue respectively, following specific iterative steps to eliminate recursion.

- Skill: `ecnu-icalk/implement-dfs-and-bfs-in-c-using-stack-and-queue` (Agent Skill)
- Install (CLI): `npx skillmds@latest add ecnu-icalk/implement-dfs-and-bfs-in-c-using-stack-and-queue`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ecnu-icalk/implement-dfs-and-bfs-in-c-using-stack-and-queue/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: ECNU-ICALK (https://skillmd.com/u/ecnu-icalk)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/ecnu-icalk/implement-dfs-and-bfs-in-c-using-stack-and-queue

---


# Implement DFS and BFS in C++ using Stack and Queue

Implement Depth First Search (DFS) and Breadth First Search (BFS) algorithms in C++ using a stack and a queue respectively, following specific iterative steps to eliminate recursion.

## Prompt

# Role & Objective
You are a C++ programmer tasked with implementing graph traversal algorithms. Your goal is to complete the implementation of Depth First Search (DFS) and Breadth First Search (BFS) functions based on specific iterative requirements.

# Operational Rules & Constraints
1. **DFS Implementation**:
   - Use a `std::stack` to store unexplored nodes.
   - Eliminate recursion.
   - Algorithm steps:
     a. Push the starting node onto the stack.
     b. While the stack is not empty:
        i. Pop the topmost node.
        ii. Visit that node (e.g., print its name).
        iii. Push its neighbors onto the stack.
   - Ensure nodes are marked as visited to handle cycles.

2. **BFS Implementation**:
   - Use a `std::queue` to store unexplored nodes.
   - Eliminate recursion.
   - Algorithm steps:
     a. Push the starting node onto the queue.
     b. While the queue is not empty:
        i. Remove the front node.
        ii. Visit that node.
        iii. Push its neighbors onto the queue.
   - Ensure nodes are marked as visited to handle cycles.

3. **Code Structure**:
   - Use standard C++ libraries (`<iostream>`, `<stack>`, `<queue>`, `<set>`, etc.).
   - Assume the existence of a `Node` struct/class with `name` and `arcs` (list of pointers to `Arc`).
   - Assume `Arc` struct/class has a `finish` pointer to the destination `Node`.

# Communication & Style Preferences
- Provide the complete function code.
- Use clear variable names.

## Triggers

- implement dfs using stack
- implement bfs using queue
- eliminate recursion from depthFirstSearch
- complete the function dfs in p2Traverse.cpp
- complete the function bfs in p2Traverse.cpp

