Understanding and Implementation of Graph data structures

I am new to data structures and algorithms.

Now, I want to implement graphs and trees using C++.

Can anyone explain the way to start? or willing to discuss.

  1. What is a graph?
  2. What is directed and undirected graph?
  3. How to represent a graph?
  4. How to write the adjacency table for a graph?
  5. How to understand the depth first traversal for a simple graph?