Depth First Search using Adjacency List

My aim to implement adjacency list correctly. After takin help from here, I have implemented it. I have tried to implement it here, but it was suggested that it is most likely adjacency matrix. Help me to improve my code. Should I add any other function for DFS.

#include <iostream>
#include <vector>

class Graph
{
int vertex_count;
enum Color {WHITE, GRAY, BLACK};

struct Vertex
{
int id;
Color color;
Vertex(int _id) : id(_id),
color(Color::WHITE)
{}
};

{
int dest_id;
next (nullptr)
{}
};

{
};
std::vector<Vertex> vertices;
public:
Graph(int);
void depth_first_search();

private:
void depth_first_search_visit(int);
};

Graph::Graph(int v)
{
vertex_count = v;

for (int i = 0; i < vertex_count; i++)
{
vertices.push_back( Vertex(i) );
}
}

void Graph::depth_first_search()
{
for (const auto& u: vertices)
{
if (vertices[u.id].color == WHITE)
{
depth_first_search_visit(u.id);
}
}
}

void Graph::depth_first_search_visit(int u)
{
vertices[u].color = GRAY;
std::cout << vertices[u].id <<" ";
if (vertices[v->dest_id].color == WHITE)
{
depth_first_search_visit(v->dest_id);
}
vertices[u].color = BLACK;
}

{
{
}
else
{
while (tmp->next != nullptr)
tmp = tmp->next;

tmp->next = node;
}

//undirected graph
{
}
else
{
while (tmp->next != nullptr)
tmp = tmp->next;

tmp->next = node;
}
}

int main()
{
Graph grp(4);