If you can find Hamiltonian cycles in an undirected graph, you can find them in directed graphs too by replacing each vertex by a linear sequence of three vertices *---*---*
and connect all incoming edges to one of the end nodes and all the outgoing edges to the other end node. After that you don't need to remember the direction of the edges.
For an Eulerian circuit, you need that every vertex has equal indegree and outdegree, and also that the graph is finite and connected and has at least one edge. Then you should be able to show that
- a non-edge-reusing walk of maximal length must be a circuit (and thus that such circuits exist), and
- a non-edge-reusing circuit that doesn't use all edges can always be extended, and thus that such a circuit of maximal length must necessarily contain all edges.